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

Version Path
aub-record_filter-0.9.10 lib/record_filter/dsl/conjunction.rb
aub-record_filter-0.9.11 lib/record_filter/dsl/conjunction.rb
aub-record_filter-0.9.12 lib/record_filter/dsl/conjunction.rb
aub-record_filter-0.9.8 lib/record_filter/dsl/conjunction.rb
aub-record_filter-0.9.9 lib/record_filter/dsl/conjunction.rb
record_filter-0.9.14 lib/record_filter/dsl/conjunction.rb
record_filter-0.9.13 lib/record_filter/dsl/conjunction.rb
record_filter-0.9.12 lib/record_filter/dsl/conjunction.rb