class Scenic::Adapters::Mysql::Indexes
Fetches indexes on objects from the Mysql connection.
@api private
Attributes
connection[R]
Public Class Methods
new(connection:)
click to toggle source
# File lib/scenic/adapters/mysql/indexes.rb, line 8 def initialize(connection:) @connection = connection end
Public Instance Methods
on(name)
click to toggle source
Indexes on the provided object.
@param name [String] The name of the object we want indexes from. @return [Array<Scenic::Index>]
# File lib/scenic/adapters/mysql/indexes.rb, line 16 def on(name) indexes_on(name).map.(&method(:index_from_database)) end
Private Instance Methods
index_definition_for(result)
click to toggle source
# File lib/scenic/adapters/mysql/indexes.rb, line 40 def index_definition_for(result) <<-SQL CREATE INDEX '#{result["Key_name"]}' ON '#{result["Table"]}' ('#{result["Column_name"]}') USING '#{result["Index_type"]}' SQL end
index_from_database(result)
click to toggle source
# File lib/scenic/adapters/mysql/indexes.rb, line 32 def index_from_database(result) Scenic::Index.new( object_name: result['Table'], index_name: result['Key_name'], definition: index_definition_for(result) ) end
indexes_on(name)
click to toggle source
# File lib/scenic/adapters/mysql/indexes.rb, line 25 def indexes_on(name) connection.exec_query(<<-SQL) SHOW INDEX FROM '#{name}' WHERE Key_name <> 'PRIMARY' SQL end