Class: Internationalize::Adapters::MySQL
- 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
-
#json_extract(column, locale) ⇒ String
Extract a value from a JSON column using ->> operator.
-
#like_insensitive(column, locale) ⇒ Array<String, Symbol>
Case-insensitive search using LIKE (default behavior with utf8mb4).
-
#like_sensitive(column, locale) ⇒ Array<String, Symbol>
Case-sensitive search using LIKE BINARY.
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
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)
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
32 33 34 |
# File 'lib/internationalize/adapters/mysql.rb', line 32 def like_sensitive(column, locale) ["#{json_extract(column, locale)} LIKE BINARY ?", :like] end |