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

Version Path
aub-record_filter-0.8.0 lib/record_filter/dsl/conjunction.rb
aub-record_filter-0.9.0 lib/record_filter/dsl/conjunction.rb
aub-record_filter-0.9.1 lib/record_filter/dsl/conjunction.rb
aub-record_filter-0.9.2 lib/record_filter/dsl/conjunction.rb
aub-record_filter-0.9.3 lib/record_filter/dsl/conjunction.rb
aub-record_filter-0.9.4 lib/record_filter/dsl/conjunction.rb
aub-record_filter-0.9.5 lib/record_filter/dsl/conjunction.rb
aub-record_filter-0.9.6 lib/record_filter/dsl/conjunction.rb
aub-record_filter-0.9.7 lib/record_filter/dsl/conjunction.rb
outoftime-record_filter-0.8.0 lib/record_filter/dsl/conjunction.rb