class Dock::Sequel
Public Instance Methods
all(options = {})
click to toggle source
Checked
# File lib/dock/adapters/sequel.rb, line 34 def all(options = {}) conditions, order = extract_conditions!(options) model.filter(conditions_to_hash(conditions)).order(*order_clause(order)).all end
associations()
click to toggle source
# File lib/dock/adapters/sequel.rb, line 55 def associations() end
belongs_to()
click to toggle source
# File lib/dock/adapters/sequel.rb, line 73 def belongs_to() end
column_names()
click to toggle source
Checked
# File lib/dock/adapters/sequel.rb, line 63 def column_names model.columns end
count(options = {})
click to toggle source
Checked
# File lib/dock/adapters/sequel.rb, line 67 def count(options = {}) all(options).count end
create()
click to toggle source
# File lib/dock/adapters/sequel.rb, line 5 def create() associated_objects = [] attrs = {} model.db.transaction do attributes.each do |col, value| if model.associations.include?(col) Array(value).each{|v| associated_objects << [association_method(col), v]} else attrs.merge!(col => value) # pass it on end end obj = model.create(attrs) # create main obj associated_objects.each do |m,o| obj.send(m, o) end obj.save end # transaction end
cyclic?()
click to toggle source
# File lib/dock/adapters/sequel.rb, line 85 def cyclic? true end
destroy(object)
click to toggle source
Checked
# File lib/dock/adapters/sequel.rb, line 52 def destroy(object) object.destroy && true if valid_object?(object) end
embedded?()
click to toggle source
# File lib/dock/adapters/sequel.rb, line 82 def embedded? false end
encoding()
click to toggle source
# File lib/dock/adapters/sequel.rb, line 70 def encoding 'UTF-8' end
find(id)
click to toggle source
Checked
# File lib/dock/adapters/sequel.rb, line 26 def find(id) model.find(wrap_key(model.primary_key => id)) end
find!(id)
click to toggle source
Checked
# File lib/dock/adapters/sequel.rb, line 30 def find!(id) model[wrap_key(id)] || raise(Error, "#{model.name} not found with #{model.primary_key} of #{wrap_key(id)}") end
first(options = {})
click to toggle source
Checked
# File lib/dock/adapters/sequel.rb, line 39 def first(options = {}) conditions, order = extract_conditions!(options) model.filter(conditions_to_hash(conditions)).order(*order_clause(order)).first end
has_many()
click to toggle source
# File lib/dock/adapters/sequel.rb, line 76 def has_many() end
id()
click to toggle source
Checked
# File lib/dock/adapters/sequel.rb, line 44 def id 'primary_key' end
model_name()
click to toggle source
Checked
# File lib/dock/adapters/sequel.rb, line 59 def model_name model.class.name end
properties()
click to toggle source
# File lib/dock/adapters/sequel.rb, line 92 def properties() end
scoped?()
click to toggle source
# File lib/dock/adapters/sequel.rb, line 79 def scoped? false end
supports_joins?()
click to toggle source
Checked
# File lib/dock/adapters/sequel.rb, line 89 def supports_joins? true end
update(search_key, find_by, update_key, by_value)
click to toggle source
# File lib/dock/adapters/sequel.rb, line 47 def update(search_key, find_by, update_key, by_value) entry = model.where(search_key, find_by) entry.update(update_key by_value) end
Protected Instance Methods
association_method(col)
click to toggle source
# File lib/dock/adapters/sequel.rb, line 117 def association_method(col) assoc = model.association_reflection(col) case assoc[:type] when :one_to_many, :many_to_many assoc.add_method else # when :many_to_one, :one_to_one assoc.setter_method end end
conditions_to_hash(conditions)
click to toggle source
# File lib/dock/adapters/sequel.rb, line 97 def conditions_to_hash(conditions) conditions.inject({}) do |cond_hash, (col, value)| # make sure the key is a symbol col = col.to_sym if value.is_a?(Sequel::Model) # look up the column name for the assoc key = model.association_reflection(col)[:key] cond_hash.merge(key => value.id) else cond_hash.merge(col => value) end end end
order_clause(order)
click to toggle source
# File lib/dock/adapters/sequel.rb, line 112 def order_clause(order) m = order.map {|pair| pair.first.send(pair.last)} m.empty? ? nil : m end