Module: Spectacles::SchemaStatements::SQLite3Adapter

Includes:
AbstractAdapter
Defined in:
lib/spectacles/schema_statements/sqlite3_adapter.rb

Instance Method Summary collapse

Methods included from AbstractAdapter

#create_materialized_view, #create_view, #create_view_statement, #drop_materialized_view, #drop_view, #drop_view_statement, #materialized_view_build_query, #materialized_view_exists?, #materialized_views, #refresh_materialized_view, #supports_materialized_views?, #view_exists?

Instance Method Details

#generate_view_query(*columns) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/spectacles/schema_statements/sqlite3_adapter.rb', line 23

def generate_view_query(*columns)
  sql = <<-SQL
    SELECT #{columns.join(',')}
    FROM sqlite_master
    WHERE type = 'view'
  SQL
end

#tables(name = nil, table_name = nil) ⇒ Object

overrides the #tables method from ActiveRecord’s SQLite3Adapter to return only tables, and not views.



10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/spectacles/schema_statements/sqlite3_adapter.rb', line 10

def tables(name = nil, table_name = nil)
  sql = <<-SQL
    SELECT name
    FROM sqlite_master
    WHERE type = 'table' AND NOT name = 'sqlite_sequence'
  SQL
  sql << " AND name = #{quote_table_name(table_name)}" if table_name

  exec_query(sql, 'SCHEMA').map do |row|
    row['name']
  end
end

#view_build_query(table_name) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/spectacles/schema_statements/sqlite3_adapter.rb', line 39

def view_build_query(table_name)
  sql = generate_view_query(:sql)
  sql << " AND name = #{quote_table_name(table_name)}"

  row = exec_query(sql, "SCHEMA").first
  row['sql'].gsub(/CREATE VIEW .*? AS/i, "")
end

#viewsObject

:nodoc:



31
32
33
34
35
36
37
# File 'lib/spectacles/schema_statements/sqlite3_adapter.rb', line 31

def views #:nodoc:
  sql = generate_view_query(:name)

  exec_query(sql, "SCHEMA").map do |row|
    row['name']
  end
end