Sha256: 32f12e4a77be584b8075143c41bdceff307f1de28b487b292081ae93bf514236

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

module ReportsKit
  module Reports
    module FilterTypes
      class Boolean < Base
        DEFAULT_CRITERIA = {
          value: nil
        }

        def apply_conditions(records)
          case conditions
          when ::String
            records.where("(#{conditions}) #{sql_operator} true")
          when ::Hash
            boolean_value ? records.where(conditions) : records.not.where(conditions)
          when ::Proc
            conditions.call(records)
          else
            raise ArgumentError.new("Unsupported conditions type: '#{conditions}'")
          end
        end

        def boolean_value
          case criteria[:value]
          when true, 'true'
            true
          when false, 'false'
            false
          else
            raise ArgumentError.new("Unsupported value: '#{criteria[:value]}'")
          end
        end

        def sql_operator
          boolean_value ? '=' : '!='
        end

        def valid?
          criteria[:value].present?
        end

        def conditions
          settings[:conditions] || properties[:key]
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reports_kit-0.2.0 lib/reports_kit/reports/filter_types/boolean.rb