Class: Internationalize::Adapters::SQLite
- Defined in:
- lib/internationalize/adapters/sqlite.rb
Overview
SQLite-specific SQL generation for JSON queries
Uses json_extract() function (SQLite 3.38+) LIKE for case-insensitive matching (default for ASCII) GLOB for case-sensitive matching
Instance Method Summary collapse
-
#glob_pattern(term) ⇒ String
GLOB pattern with wildcards GLOB uses * and ? instead of % and _, and is case-sensitive.
-
#json_extract(column, locale) ⇒ String
Extract a value from a JSON column using json_extract.
-
#like_insensitive(column, locale) ⇒ Array<String, Symbol>
Case-insensitive search using LIKE (default for ASCII in SQLite).
-
#like_sensitive(column, locale) ⇒ Array<String, Symbol>
Case-sensitive search using GLOB.
Methods inherited from Base
#like_pattern, #sanitize_locale
Instance Method Details
#glob_pattern(term) ⇒ String
GLOB pattern with wildcards GLOB uses * and ? instead of % and _, and is case-sensitive
41 42 43 44 45 |
# File 'lib/internationalize/adapters/sqlite.rb', line 41 def glob_pattern(term) # Escape GLOB special characters: * ? [ ] escaped = term.to_s.gsub(/[*?\[\]]/) { |m| "[#{m}]" } "*#{escaped}*" end |
#json_extract(column, locale) ⇒ String
Extract a value from a JSON column using json_extract
18 19 20 |
# File 'lib/internationalize/adapters/sqlite.rb', line 18 def json_extract(column, locale) "json_extract(#{column}, '$.#{sanitize_locale(locale)}')" end |
#like_insensitive(column, locale) ⇒ Array<String, Symbol>
Case-insensitive search using LIKE (default for ASCII in SQLite)
25 26 27 |
# File 'lib/internationalize/adapters/sqlite.rb', line 25 def like_insensitive(column, locale) ["#{json_extract(column, locale)} LIKE ? ESCAPE '\\'", :like] end |
#like_sensitive(column, locale) ⇒ Array<String, Symbol>
Case-sensitive search using GLOB
32 33 34 |
# File 'lib/internationalize/adapters/sqlite.rb', line 32 def like_sensitive(column, locale) ["#{json_extract(column, locale)} GLOB ?", :glob] end |