Class: Internationalize::Adapters::PostgreSQL

Inherits:
Base
  • Object
show all
Defined in:
lib/internationalize/adapters/postgresql.rb

Overview

PostgreSQL-specific SQL generation for JSON/JSONB queries

Uses ->> operator for text extraction from JSON/JSONB columns ILIKE for case-insensitive matching LIKE for case-sensitive matching

Instance Method Summary collapse

Methods inherited from Base

#glob_pattern, #like_pattern, #sanitize_locale

Instance Method Details

#json_extract(column, locale) ⇒ String

Extract a value from a JSON/JSONB column using ->> operator

Parameters:

  • column (String)

    the JSON column name

  • locale (String, Symbol)

    the locale key

Returns:

  • (String)

    SQL fragment



18
19
20
# File 'lib/internationalize/adapters/postgresql.rb', line 18

def json_extract(column, locale)
  "#{column}->>'#{sanitize_locale(locale)}'"
end

#like_insensitive(column, locale) ⇒ Array<String, Symbol>

Case-insensitive search using ILIKE

Returns:

  • (Array<String, Symbol>)

    SQL condition and pattern type



25
26
27
# File 'lib/internationalize/adapters/postgresql.rb', line 25

def like_insensitive(column, locale)
  ["#{json_extract(column, locale)} ILIKE ?", :like]
end

#like_sensitive(column, locale) ⇒ Array<String, Symbol>

Case-sensitive search using LIKE

Returns:

  • (Array<String, Symbol>)

    SQL condition and pattern type



32
33
34
# File 'lib/internationalize/adapters/postgresql.rb', line 32

def like_sensitive(column, locale)
  ["#{json_extract(column, locale)} LIKE ?", :like]
end