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