A simple ruby gem to simplify MySQL queries.
Usage examples:
require 'pluk'
class User
attr_accessor :user_id, :first_name, :last_name, :department_id
end
class Users < Pluk::TableAdapter
def initialize(conn)
super(conn, "users", User)
end
def select_query(qp)
qp.search_fields = "first_name, last_name"
"SELECT user_id, first_name, last_name, department_id#{qp.sql_search_fields} " \
"FROM users #{qp.sql_filter}#{qp.sql_having}#{qp.sql_order_by}#{qp.sql_limit}"
end
end
cn = Pluk::Connection.new(host: "localhost", username: "root", password: "", database: "pluk-test")
uu = Users.new(cn)
# retrieve all users (return array):
uu.all
# retrieve users by department_id (return array):
uu.all(department_id: 4)
# retrieve users by department_id (return array):
uu.all("department_id = 4")
# retrieve users using keywords (return array):
uu.all(keywords: "heryudi praja")
# retrieve a user by id (return single object):
uu.first(user_id: 1)
# retrieve a user by id (return single object):
uu.first("user_id = 1")
# sort results
uu.all(order_by: "first_name, last_name")
# more select
uu.all(department_id: 1, order_by: "last_name", offset: 10, limit: 20, keywords: "yudi")
# load to object
u1 = uu.load(user_id: 1)
# load_to
u1 = User.new
uu.load_to u1, "(user_id = 2)")
# load_to
u1 = User.new
uu.load_to u1, user_id: 2
# clear table
uu.truncate
# insert from hash
[
{first_name: "Heryudi", last_name: "Praja", department_id: 1},
{first_name: "Ki", last_name: "Sanak", department_id: 1},
{first_name: "Si", last_name: "Fulan", department_id: 2}
].each{|c|uu.insert(c)}
# insert from object
u1 = User.new
u1.first_name = "Heryudi"
u1.last_name = "Praja"
u1.department_id = 2
uu.insert u1
# update
uu.update({first_name: "Someone", last_name: "Else"}, "(id_user = 1)")
# update from object
u1 = uu.load(user_id: 1)
u1.first_name = "Someone"
u1.last_name = "Else"
uu.update u1, user_id: 1
# update with limit of 10 rows
uu.update({note: "invalid account"}, {f_data: 0}, 10)
# delete
uu.delete "(user_id = 1)"
# delete
uu.delete user_id: 1
# delete with limit of 10 rows
uu.delete {f_data: 0}, 10
# empty?
uu.empty?
# exist?
uu.exist? user_id: 1