Class: Rooq::ParameterConverter

Inherits:
Object
  • Object
show all
Defined in:
lib/rooq/parameter_converter.rb

Overview

ParameterConverter converts Ruby objects to PostgreSQL-compatible parameter values.

Conversions:

  • Time/DateTime -> ISO 8601 string
  • Date -> ISO 8601 date string
  • Hash -> JSON string
  • Array of primitives -> PostgreSQL array literal
  • Array of hashes -> JSON array string
  • Symbol -> String
  • Other types pass through unchanged

Examples:

converter = ParameterConverter.new
converter.convert(Time.now)           # => "2024-01-15T10:30:45+00:00"
converter.convert({ key: "value" })   # => '{"key":"value"}'
converter.convert([1, 2, 3])          # => "{1,2,3}"

Instance Method Summary collapse

Instance Method Details

#convert(value) ⇒ Object

Convert a single parameter value.

Parameters:

  • value (Object)

    the value to convert

Returns:

  • (Object)

    the converted value



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/rooq/parameter_converter.rb', line 28

def convert(value)
  case value
  when nil, true, false, Integer, Float
    value
  when String
    value
  when Time, DateTime
    value.iso8601
  when Date
    value.iso8601
  when Hash
    JSON.generate(value)
  when Array
    convert_array(value)
  when Symbol
    value.to_s
  else
    value
  end
end

#convert_all(params) ⇒ Array

Convert an array of parameter values.

Parameters:

  • params (Array)

    the parameters to convert

Returns:

  • (Array)

    the converted parameters



52
53
54
# File 'lib/rooq/parameter_converter.rb', line 52

def convert_all(params)
  params.map { |p| convert(p) }
end