Class: Internationalize::Adapters::MySQL

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

Overview

MySQL 8+ specific SQL generation for JSON queries

Uses ->> operator for text extraction from JSON columns LIKE for case-insensitive matching (default with utf8mb4 collation) LIKE BINARY 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 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/mysql.rb', line 18

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

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

Case-insensitive search using LIKE (default behavior with utf8mb4)

Returns:

  • (Array<String, Symbol>)

    SQL condition and pattern type



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

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

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

Case-sensitive search using LIKE BINARY

Returns:

  • (Array<String, Symbol>)

    SQL condition and pattern type



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

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