Sha256: 1b5ec5f2427232affbe05b6c01bf15a4f4db5ed00502f474b25d75efd23d38ef
Contents?: true
Size: 1.13 KB
Versions: 2
Compression:
Stored size: 1.13 KB
Contents
module ReportsKits module Reports module FilterTypes class String < Base DEFAULT_CRITERIA = { operator: 'contains' } def apply_conditions(records) case criteria[:operator] when 'equals' records.where("#{column} = ?", value) when 'contains' records.where("#{column} ILIKE ?", "%#{value}%") when 'starts_with' records.where("#{column} ILIKE ?", "#{value}%") when 'ends_with' records.where("#{column} ILIKE ?", "%#{value}") when 'does_not_equal' records.where("#{column} != ?", value) when 'does_not_contain' records.where("#{column} NOT ILIKE ?", "%#{value}%") when 'does_not_start_with' records.where("#{column} NOT ILIKE ?", "#{value}%") when 'does_not_end_with' records.where("#{column} NOT ILIKE ?", "%#{value}") else raise ArgumentError.new("Unsupported operator: '#{criteria[:operator]}'") end end def valid? value.present? end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
reports_kits-0.7.8 | lib/reports_kits/reports/filter_types/string.rb |
reports_kits-0.7.7 | lib/reports_kits/reports/filter_types/string.rb |