class Bmg::Sequel::Relation

Attributes

sequel_db[R]

Public Class Methods

new(type, builder, source, sequel_db) click to toggle source
Calls superclass method
# File lib/bmg/sequel/relation.rb, line 5
def initialize(type, builder, source, sequel_db)
  super(type, builder, source)
  @sequel_db = sequel_db
end

Public Instance Methods

_count() click to toggle source
# File lib/bmg/sequel/relation.rb, line 37
def _count
  dataset.count
end
delete() click to toggle source
# File lib/bmg/sequel/relation.rb, line 16
def delete
  base_table.delete
end
each(&bl) click to toggle source
# File lib/bmg/sequel/relation.rb, line 11
def each(&bl)
  return to_enum unless block_given?
  dataset.each(&bl)
end
insert(arg) click to toggle source
# File lib/bmg/sequel/relation.rb, line 20
def insert(arg)
  case arg
  when Hash then
    base_table.insert(arg.merge(type.predicate.constants))
  when Enumerable then
    base_table.multi_insert(arg.map { |x|
      x.merge(type.predicate.constants)
    })
  else
    base_table.insert(arg.merge(type.predicate.constants))
  end
end
inspect()
Alias for: to_s
to_ast() click to toggle source
# File lib/bmg/sequel/relation.rb, line 41
def to_ast
  [:sequel, dataset.sql]
end
to_s() click to toggle source
# File lib/bmg/sequel/relation.rb, line 49
def to_s
  "(sequel #{dataset.sql})"
end
Also aliased as: inspect
to_sql() click to toggle source
# File lib/bmg/sequel/relation.rb, line 45
def to_sql
  dataset.sql
end
update(arg) click to toggle source
# File lib/bmg/sequel/relation.rb, line 33
def update(arg)
  base_table.update(arg)
end

Protected Instance Methods

_instance(type, builder, expr) click to toggle source
# File lib/bmg/sequel/relation.rb, line 66
def _instance(type, builder, expr)
  Relation.new(type, builder, expr, sequel_db)
end
base_table() click to toggle source
# File lib/bmg/sequel/relation.rb, line 60
def base_table
  raise InvalidUpdateError unless self.expr.respond_to?(:table_spec)
  raise InvalidUpdateError unless self.expr.table_spec.first == :table_as
  sequel_db[self.expr.table_spec.table_name.to_sym]
end
dataset() click to toggle source
# File lib/bmg/sequel/relation.rb, line 56
def dataset
  @dataset ||= Translator.new(sequel_db).call(self.expr)
end
extract_compatible_sexpr(operand) click to toggle source
# File lib/bmg/sequel/relation.rb, line 70
def extract_compatible_sexpr(operand)
  return nil unless operand.is_a?(Bmg::Sequel::Relation)
  return nil unless self.sequel_db == operand.sequel_db
  operand.expr
end