Module: Spectacles::SchemaStatements::MysqlAdapter

Includes:
AbstractAdapter
Included in:
Mysql2Adapter
Defined in:
lib/spectacles/schema_statements/mysql_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

#tables(name = nil, database = nil, like = nil) ⇒ Object

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



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/spectacles/schema_statements/mysql_adapter.rb', line 10

def tables(name = nil, database = nil, like = nil)
  database = database ? quote_table_name(database) : "DATABASE()"
  by_name  = like ? "AND table_name LIKE #{quote(like)}" : ""

  sql = "    SELECT table_name, table_type\n      FROM information_schema.tables\n     WHERE table_schema = \#{database}\n       AND table_type = 'BASE TABLE'\n       \#{by_name}\n  SQL\n\n  execute_and_free(sql, 'SCHEMA') do |result|\n    result.collect(&:first)\n  end\nend\n".squish

#view_build_query(view, name = nil) ⇒ Object



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

def view_build_query(view, name = nil)
  row = execute("SHOW CREATE VIEW #{view}", name).first
  return row[1].gsub(/CREATE .*? (AS)+/i, "")
rescue ActiveRecord::StatementInvalid => e
  raise "No view called #{view} found"
end

#views(name = nil) ⇒ Object

:nodoc:



27
28
29
# File 'lib/spectacles/schema_statements/mysql_adapter.rb', line 27

def views(name = nil) #:nodoc:
  execute("SHOW FULL TABLES WHERE TABLE_TYPE='VIEW'").map { |row| row[0] }
end