Sha256: 7cd0e0d6d4b9b736b5a4037e0dbbf2c256695eb8fe6f512a9ae72da02e433b6f

Contents?: true

Size: 1.44 KB

Versions: 6

Compression:

Stored size: 1.44 KB

Contents

module ForestLiana
  class OperatorValueParser

    def self.parse(value)
      operator = nil

      if value.first == '!'
        operator = '!='
        value.slice!(0)
      elsif value.first == '>'
        operator = '>'
        value.slice!(0)
      elsif value.first == '<'
        operator = '<'
        value.slice!(0)
      elsif value.include?('*')
        operator = 'ILIKE'
        value.gsub!('*', '%')
      elsif value === '$present'
        operator = 'IS NOT NULL'
        value = nil
      elsif value === '$blank'
        operator = 'IS NULL'
        value = nil
      else
        operator = '='
      end

      [operator, value]
    end

    def self.add_where(query, field, operator, value, resource)
      field_name = self.get_field_name(field, resource)

      operator_date_interval_parser = OperatorDateIntervalParser.new(value)
      if operator_date_interval_parser.is_interval_date_value()
        filter = operator_date_interval_parser.get_interval_date_filter()
        query = query.where("#{field_name} #{filter}")
      else
        where = "#{field_name} #{operator}"
        where += " '#{value}'" if value
        query = query.where(where)
      end
    end

    def self.get_field_name(field, resource)
      if field.split(':').size < 2
        "\"#{resource.table_name}\".\"#{field}\""
      else
        association = field.split(':')[0].pluralize
        "\"#{association}\".\"#{field.split(':')[1]}\""
      end
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
forest_liana-1.3.19 app/services/forest_liana/operator_value_parser.rb
forest_liana-1.3.18 app/services/forest_liana/operator_value_parser.rb
forest_liana-1.3.17 app/services/forest_liana/operator_value_parser.rb
forest_liana-1.3.16 app/services/forest_liana/operator_value_parser.rb
forest_liana-1.3.15 app/services/forest_liana/operator_value_parser.rb
forest_liana-1.3.14 app/services/forest_liana/operator_value_parser.rb