Module: AfterMigrate::Sqlite

Extended by:
Sql
Defined in:
lib/after_migrate/adapters/sqlite.rb

Constant Summary

Constants included from Sql

AfterMigrate::Sql::IDENT, AfterMigrate::Sql::PATTERNS

Class Method Summary collapse

Methods included from Sql

parse_tables

Class Method Details

.all_tablesObject



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/after_migrate/adapters/sqlite.rb', line 21

def all_tables(**)
  # SQLite has no concept of schema (everything is in one file)
  # The `schema:` parameter is ignored — there's only one database
  ActiveRecord::Base.connection.select_values(<<~SQL.squish)
    SELECT name
    FROM sqlite_master
    WHERE type = 'table'
      AND name NOT LIKE 'sqlite_%'
      AND name NOT IN ('ar_internal_metadata', 'schema_migrations')
    ORDER BY name
  SQL
end

.optimize_tables(connection:) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/after_migrate/adapters/sqlite.rb', line 9

def optimize_tables(connection:, **)
  version = connection.respond_to?(:sqlite_version) ? connection.sqlite_version : '0'
  if Gem::Version.new(version.split.first || '0') >= Gem::Version.new('3.35.0')
    AfterMigrate.log('Running PRAGMA optimize')
    connection.execute('PRAGMA optimize;')
  else
    AfterMigrate.log('Running VACUUM; ANALYZE;')
    connection.execute('VACUUM;')
    connection.execute('ANALYZE;')
  end
end