Module: Shiboru::Operators

Defined in:
lib/shiboru/operators.rb

Constant Summary collapse

DEFAULT =
{
  "eq" => ->(col, v) { ["#{col} = ?", v] },
  "ne" => ->(col, v) { ["#{col} <> ?", v] },
  "gt" => ->(col, v) { ["#{col} > ?", v] },
  "gte" => ->(col, v) { ["#{col} >= ?", v] },
  "lt" => ->(col, v) { ["#{col} < ?", v] },
  "lte" => ->(col, v) { ["#{col} <= ?", v] },
  "contains" => ->(col, v) { ["#{col} LIKE ?", "%#{v}%"] },
  "startswith" => ->(col, v) { ["#{col} LIKE ?", "#{v}%"] },
  "endswith" => ->(col, v) { ["#{col} LIKE ?", "%#{v}"] },
  "icontains" => ->(col, v) { ["#{col} ILIKE ?", "%#{v}%"] },
  "istartswith" => ->(col, v) { ["#{col} ILIKE ?", "#{v}%"] },
  "iendswith" => ->(col, v) { ["#{col} ILIKE ?", "%#{v}"] },
  "in" => ->(col, v) { ["#{col} IN (?)", v] },
  "nin" => ->(col, v) { ["#{col} NOT IN (?)", v] },
  "isnull" => ->(col, v) { v.to_s == "true" ? ["#{col} IS NULL"] : ["#{col} IS NOT NULL"] },
  "range" => lambda { |col, v|
    a, b = v
    ["#{col} BETWEEN ? AND ?", a, b]
  }
}.freeze