Module: SchemaPlus::Indexes::Middleware::Schema::Sqlite3::Indexes

Defined in:
lib/schema_plus/indexes/middleware/schema.rb

Instance Method Summary collapse

Instance Method Details

#after(env) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/schema_plus/indexes/middleware/schema.rb', line 7

def after(env)
  indexes = Hash[env.index_definitions.map{ |d| [d.name, d] }]

  env.connection.exec_query("SELECT name, sql FROM sqlite_master WHERE type = 'index'").map do |row|
    if row['sql'] && (desc_columns = row['sql'].scan(/['"`]?(\w+)['"`]? DESC\b/).flatten).any?
      index = indexes[row['name']]
      index.orders = Hash[index.columns.map {|column| [column, desc_columns.include?(column) ? :desc : :asc]}]
    end
  end
end