Sha256: 69e314c376ab5d3f9c6cef43587d6e008b74e27bd5ecc6164a8c25a31f56f376
Contents?: true
Size: 1.5 KB
Versions: 10
Compression:
Stored size: 1.5 KB
Contents
module RecordFilter module DSL class Conjunction # :nodoc: all attr_reader :type, :steps def initialize(model_class, type=:all_of) @model_class, @type, @steps = model_class, type, [] end def add_restriction(column, value) @steps << (restriction = Restriction.new(column, value)) restriction end def add_conjunction(type, &block) dsl = ConjunctionDSL.new(@model_class, Conjunction.new(@model_class, type)) dsl.instance_eval(&block) if block @steps << dsl.conjunction end def add_join(association, join_type, &block) dsl = ConjunctionDSL.new(@model_class, Conjunction.new(@model_class, :all_of)) dsl.instance_eval(&block) if block @steps << Join.new(association, join_type, dsl.conjunction) dsl end def add_class_join(clazz, join_type, table_alias, &block) dsl = JoinDSL.new(@model_class, Conjunction.new(@model_class, :all_of)) dsl.instance_eval(&block) if block @steps << ClassJoin.new(clazz, join_type, table_alias, dsl.conjunction, dsl.conditions) dsl end def add_limit(limit, offset) @steps << Limit.new(limit, offset) end def add_order(column, direction) @steps << Order.new(column, direction) end def add_group_by(column) @steps << GroupBy.new(column) end def add_named_filter(method, *args) @steps << NamedFilter.new(method, *args) end end end end
Version data entries
10 entries across 10 versions & 2 rubygems