Module: LlmCostTracker::ActiveRecordAdapter

Defined in:
lib/llm_cost_tracker/active_record_adapter.rb

Constant Summary collapse

MYSQL_ADAPTERS =
%w[
  ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
  ActiveRecord::ConnectionAdapters::Mysql2Adapter
  ActiveRecord::ConnectionAdapters::TrilogyAdapter
].freeze
POSTGRESQL_ADAPTERS =
%w[
  ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
].freeze
MYSQL_PATTERN =
/mysql|trilogy|mariadb/i
POSTGRESQL_PATTERN =
/postgres/i

Class Method Summary collapse

Class Method Details

.ensure_supported!(value) ⇒ Object

Raises:



27
28
29
30
31
# File 'lib/llm_cost_tracker/active_record_adapter.rb', line 27

def ensure_supported!(value)
  return if supported?(value)

  raise Error, "Unsupported database adapter: #{adapter_name(value)}. Use PostgreSQL or MySQL."
end

.mysql?(value) ⇒ Boolean

Returns:

  • (Boolean)


19
# File 'lib/llm_cost_tracker/active_record_adapter.rb', line 19

def mysql?(value) = adapter_instance?(value, MYSQL_ADAPTERS) || adapter_name(value).match?(MYSQL_PATTERN)

.postgresql?(value) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/llm_cost_tracker/active_record_adapter.rb', line 21

def postgresql?(value)
  adapter_instance?(value, POSTGRESQL_ADAPTERS) || adapter_name(value).match?(POSTGRESQL_PATTERN)
end

.supported?(value) ⇒ Boolean

Returns:

  • (Boolean)


25
# File 'lib/llm_cost_tracker/active_record_adapter.rb', line 25

def supported?(value) = mysql?(value) || postgresql?(value)