class Scenic::Adapters::Postgres::Indexes
Fetches indexes on objects from the Postgres
connection.
@api private
Attributes
Public Class Methods
Source
# File lib/scenic/adapters/postgres/indexes.rb, line 8 def initialize(connection:) @connection = connection end
Public Instance Methods
Private Instance Methods
Source
# File lib/scenic/adapters/postgres/indexes.rb, line 43 def index_from_database(result) Scenic::Index.new( object_name: result["object_name"], index_name: result["index_name"], definition: result["definition"] ) end
Source
# File lib/scenic/adapters/postgres/indexes.rb, line 25 def indexes_on(name) connection.execute(<<-SQL) SELECT t.relname as object_name, i.relname as index_name, pg_get_indexdef(d.indexrelid) AS definition FROM pg_class t INNER JOIN pg_index d ON t.oid = d.indrelid INNER JOIN pg_class i ON d.indexrelid = i.oid LEFT JOIN pg_namespace n ON n.oid = i.relnamespace WHERE i.relkind = 'i' AND d.indisprimary = 'f' AND t.relname = '#{name}' AND n.nspname = ANY (current_schemas(false)) ORDER BY i.relname SQL end