module Spectacles::SchemaStatements::Mysql2Adapter
Public Instance Methods
tables(name = nil, database = nil, like = nil)
click to toggle source
overrides the tables
method from ActiveRecord's MysqlAdapter to return only tables, and not views.
# File lib/spectacles/schema_statements/mysql2_adapter.rb, line 8 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 = <<-SQL.squish SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = #{database} AND table_type = 'BASE TABLE' #{by_name} SQL execute_and_free(sql, 'SCHEMA') do |result| rows_from(result).map(&:first) end end
view_build_query(view, name = nil)
click to toggle source
# File lib/spectacles/schema_statements/mysql2_adapter.rb, line 31 def view_build_query(view, name = nil) result = execute("SHOW CREATE VIEW #{view}", name) algorithm_string = rows_from(result).first[1] algorithm_string.gsub(/CREATE .*? (AS)+/i, "") rescue ActiveRecord::StatementInvalid => e raise "No view called #{view} found, #{e}" end
Private Instance Methods
rows_from(result)
click to toggle source
# File lib/spectacles/schema_statements/mysql2_adapter.rb, line 42 def rows_from(result) result.respond_to?(:rows) ? result.rows : result end