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