module Bmg::Sequel

Public Class Methods

infer_type(sequel_db, source) click to toggle source
# File lib/bmg/sequel.rb, line 30
def infer_type(sequel_db, source)
  TypeInference.new(sequel_db).call(source) if source.is_a?(Symbol) || source.is_a?(::Sequel::SQL::QualifiedIdentifier)
end
sequel(*args, &bl) click to toggle source
# File lib/bmg/sequel.rb, line 8
def sequel(*args, &bl)
  source, sequel_db, type = sequel_params(*args, &bl)
  if type
    builder = Sql::Builder.new
    sexpr = builder.select_all(type.to_attrlist, source)
    Sequel::Relation.new(type, builder, sexpr, sequel_db).spied(Bmg.main_spy)
  else
    Bmg::Relation.new(source)
  end
end
sequel_params(source, sequel_db = nil, type = nil) click to toggle source
# File lib/bmg/sequel.rb, line 20
def sequel_params(source, sequel_db = nil, type = nil)
  sequel_db, type = nil, sequel_db if sequel_db.nil? or sequel_db.is_a?(Type)
  sequel_db = source.db if sequel_db.nil? and source.is_a?(::Sequel::Dataset)
  raise ArgumentError, "A Sequel::Database object is required" if sequel_db.nil?
  raise ArgumentError, "Type's attrlist must be known (#{type})" if type && !type.knows_attrlist?
  type = infer_type(sequel_db, source) if type.nil?
  [source, sequel_db, type]
end

Private Instance Methods

infer_type(sequel_db, source) click to toggle source
# File lib/bmg/sequel.rb, line 30
def infer_type(sequel_db, source)
  TypeInference.new(sequel_db).call(source) if source.is_a?(Symbol) || source.is_a?(::Sequel::SQL::QualifiedIdentifier)
end
sequel(*args, &bl) click to toggle source
# File lib/bmg/sequel.rb, line 8
def sequel(*args, &bl)
  source, sequel_db, type = sequel_params(*args, &bl)
  if type
    builder = Sql::Builder.new
    sexpr = builder.select_all(type.to_attrlist, source)
    Sequel::Relation.new(type, builder, sexpr, sequel_db).spied(Bmg.main_spy)
  else
    Bmg::Relation.new(source)
  end
end
sequel_params(source, sequel_db = nil, type = nil) click to toggle source
# File lib/bmg/sequel.rb, line 20
def sequel_params(source, sequel_db = nil, type = nil)
  sequel_db, type = nil, sequel_db if sequel_db.nil? or sequel_db.is_a?(Type)
  sequel_db = source.db if sequel_db.nil? and source.is_a?(::Sequel::Dataset)
  raise ArgumentError, "A Sequel::Database object is required" if sequel_db.nil?
  raise ArgumentError, "Type's attrlist must be known (#{type})" if type && !type.knows_attrlist?
  type = infer_type(sequel_db, source) if type.nil?
  [source, sequel_db, type]
end