Module: RubyLLM::Monitoring::MigrationHelpers

Defined in:
lib/ruby_llm/monitoring/migration_helpers.rb

Instance Method Summary collapse

Instance Method Details

#json_extract(field, as: nil) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/ruby_llm/monitoring/migration_helpers.rb', line 4

def json_extract(field, as: nil)
  base_expr = case adapter_name.downcase
  when "mysql2", "trilogy"
    "JSON_UNQUOTE(JSON_EXTRACT(payload, '$.#{field}'))"
  else
    "payload->>'#{field}'"
  end

  return base_expr unless as == :integer

  case adapter_name.downcase
  when "mysql2", "trilogy"
    "CAST(JSON_UNQUOTE(JSON_EXTRACT(payload, '$.#{field}')) AS UNSIGNED)"
  when "postgresql"
    "(payload->>'#{field}')::integer"
  else
    "CAST(payload->>'#{field}' AS INTEGER)"
  end
end

#json_extract_array(field, index, as: nil) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/ruby_llm/monitoring/migration_helpers.rb', line 24

def json_extract_array(field, index, as: nil)
  base_expr = case adapter_name.downcase
  when "mysql2", "trilogy"
    "JSON_UNQUOTE(JSON_EXTRACT(payload, '$.#{field}[#{index}]'))"
  when "postgresql"
    "(payload->'#{field}'->>#{index})"
  else
    "json_extract(payload, '$.#{field}[#{index}]')"
  end

  return base_expr unless as == :integer

  case adapter_name.downcase
  when "mysql2", "trilogy"
    "CAST(#{base_expr} AS UNSIGNED)"
  when "postgresql"
    "(#{base_expr})::integer"
  else
    "CAST(#{base_expr} AS INTEGER)"
  end
end