Sha256: 377253eb7e9a49c41ecca9e6dba2c59e770b708dafef300cb72ce99174413144

Contents?: true

Size: 1.27 KB

Versions: 13

Compression:

Stored size: 1.27 KB

Contents

class Card
  module Query
    # support the use of the card_references table in CQL
    class ReferenceQuery < AbstractQuery
      def table
        "card_references"
      end

      def table_prefix
        "cr"
      end

      def referer hash
        add_conditions :referer_id, hash
      end

      def referee hash
        add_conditions :referee_id, hash
      end

      def add_conditions outfield, hash
        add_reftype_condition hash[:reftype]
        add_outfield_condition outfield, hash[:card]
      end

      def add_outfield_condition outfield, outcard
        if outcard == "_none"
          non_outfield
        elsif (id = id_from_val(outcard))
          outfield_id outfield, id
        else
          tie :card, outcard, from: outfield
        end
      end

      def non_outfield
        add_condition "#{fld :present} = 0"
      end

      def outfield_id outfield, id
        add_condition "#{fld(outfield)} = #{id}"
      end

      def add_reftype_condition reftype
        return unless reftype.present?
        reftype = Array.wrap reftype
        operator = (reftype.size == 1 ? "=" : "IN")
        quoted_letters = reftype.map { |letter| "'#{letter}'" } * ", "
        add_condition "#{fld(:ref_type)} #{operator} (#{quoted_letters})"
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
card-1.96.8 lib/card/query/reference_query.rb
card-1.96.7 lib/card/query/reference_query.rb
card-1.96.6 lib/card/query/reference_query.rb
card-1.96.5 lib/card/query/reference_query.rb
card-1.96.4 lib/card/query/reference_query.rb
card-1.96.3 lib/card/query/reference_query.rb
card-1.96.2 lib/card/query/reference_query.rb
card-1.96.1 lib/card/query/reference_query.rb
card-1.96.0 lib/card/query/reference_query.rb
card-1.95.3 lib/card/query/reference_query.rb
card-1.95.2 lib/card/query/reference_query.rb
card-1.95.1 lib/card/query/reference_query.rb
card-1.95.0 lib/card/query/reference_query.rb