Class: Tidewave::DatabaseAdapters::Sequel

Inherits:
Tidewave::DatabaseAdapter show all
Defined in:
lib/tidewave/database_adapters/sequel.rb

Constant Summary collapse

RESULT_LIMIT =
50

Instance Method Summary collapse

Methods inherited from Tidewave::DatabaseAdapter

create_adapter, current

Instance Method Details

#execute_query(query, arguments = []) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/tidewave/database_adapters/sequel.rb', line 8

def execute_query(query, arguments = [])
  db = ::Sequel::Model.db

  # Execute the query with arguments
  result = if arguments.any?
    db.fetch(query, *arguments)
  else
    db.fetch(query)
  end

  # Convert to array of hashes and extract metadata
  rows = result.all
  columns = rows.first&.keys || []

  # Format the result similar to ActiveRecord
  {
    columns: columns.map(&:to_s),
    rows: rows.first(RESULT_LIMIT).map(&:values),
    row_count: rows.length,
    adapter: db.adapter_scheme.to_s.upcase,
    database: db.opts[:database]
  }
end

#get_modelsObject



32
33
34
35
# File 'lib/tidewave/database_adapters/sequel.rb', line 32

def get_models
  # Filter out anonymous Sequel models that can't be resolved as constants
  ::Sequel::Model.descendants.reject { |model| model.name&.start_with?("Sequel::_Model(") }
end