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