Module: ActiveRecord::Trino::Config

Defined in:
lib/active_record/trino/config.rb

Constant Summary collapse

DEFAULT_QUERY_TIMEOUT =
150
DEFAULT_PLAN_TIMEOUT =
30
DEFAULT_SLOW_QUERY_THRESHOLD_SECONDS =
20
DEFAULT_HTTP_PORT =
8080
DEFAULT_HTTPS_PORT =
443
REQUIRED_KEYS =
%i[host user catalog schema].freeze

Class Method Summary collapse

Class Method Details

.bulk_column_reflection?(config) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/active_record/trino/config.rb', line 40

def bulk_column_reflection?(config)
  !!symbolize(config).fetch(:bulk_column_reflection, false)
end

.client_options(config) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/active_record/trino/config.rb', line 16

def client_options(config)
  symbolized = symbolize(config)
  validate!(symbolized)
  ssl = symbolized.fetch(:ssl, false)
  port = symbolized.fetch(:port, default_port(ssl))
  {
    server: "#{symbolized[:host]}:#{port}",
    user: symbolized[:user],
    password: symbolized[:password],
    catalog: symbolized[:catalog],
    schema: symbolized[:schema],
    ssl: ssl,
    http_proxy: symbolized[:http_proxy],
    time_zone: symbolized[:time_zone],
    gzip: symbolized[:gzip],
    query_timeout: symbolized.fetch(:query_timeout, DEFAULT_QUERY_TIMEOUT),
    plan_timeout: symbolized.fetch(:plan_timeout, DEFAULT_PLAN_TIMEOUT),
  }.compact
end

.default_port(ssl) ⇒ Object



48
49
50
# File 'lib/active_record/trino/config.rb', line 48

def default_port(ssl)
  ssl ? DEFAULT_HTTPS_PORT : DEFAULT_HTTP_PORT
end

.persistent?(config) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/active_record/trino/config.rb', line 36

def persistent?(config)
  !!symbolize(config).fetch(:persistent, false)
end

.slow_query_threshold(config) ⇒ Object



52
53
54
55
# File 'lib/active_record/trino/config.rb', line 52

def slow_query_threshold(config)
  symbolized = symbolize(config)
  symbolized.fetch(:slow_query_threshold_seconds, DEFAULT_SLOW_QUERY_THRESHOLD_SECONDS).to_f
end

.static_schema?(config) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/active_record/trino/config.rb', line 44

def static_schema?(config)
  !!symbolize(config).fetch(:static_schema, false)
end

.symbolize(config) ⇒ Object



66
67
68
# File 'lib/active_record/trino/config.rb', line 66

def symbolize(config)
  config.to_h.transform_keys(&:to_sym)
end

.validate!(config) ⇒ Object



57
58
59
60
61
62
63
64
# File 'lib/active_record/trino/config.rb', line 57

def validate!(config)
  symbolized = symbolize(config)
  missing = REQUIRED_KEYS.reject { |k| symbolized[k] && !symbolized[k].to_s.empty? }
  return if missing.empty?

  raise ActiveRecord::Trino::ConfigurationError,
        "activerecord-trino-adapter: missing required config keys: #{missing.join(', ')}"
end