Sha256: 0e735c39c7236d117286cec1a469ae69fb5ec9178f4b4e174f956e987c58b2a7
Contents?: true
Size: 1.6 KB
Versions: 8
Compression:
Stored size: 1.6 KB
Contents
module RecordFilter module DSL class Conjunction # :nodoc: all attr_reader :type, :steps, :distinct def initialize(model_class, type=:all_of) @model_class, @type, @steps, @distinct = model_class, type, [], false 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, aliaz, &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, aliaz) 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 set_distinct @distinct = true end def add_named_filter(method, *args) @steps << NamedFilter.new(method, *args) end end end end
Version data entries
8 entries across 8 versions & 2 rubygems