Module: SchemaPlus::Views::ActiveRecord::ConnectionAdapters::Mysql2Adapter

Defined in:
lib/schema_plus/views/active_record/connection_adapters/mysql2_adapter.rb

Instance Method Summary collapse

Instance Method Details

#view_full_definition(view_name, name = nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/schema_plus/views/active_record/connection_adapters/mysql2_adapter.rb', line 6

def view_full_definition(view_name, name = nil)
  data = SchemaMonkey::Middleware::Schema::ViewDefinition.start(connection: self, view_name: view_name, query_name: name, view_type: :view) { |env|
    results = select_all("SELECT view_definition, check_option FROM information_schema.views WHERE table_schema = SCHEMA() AND table_name = #{quote(view_name)}", name)
    if  results.any?
      row = results.first
      sql = row["view_definition"]
      sql.gsub!(%r{#{quote_table_name(current_database)}[.]}, '')
      case row["check_option"]
      when "CASCADED" then sql += " WITH CASCADED CHECK OPTION"
      when "LOCAL" then sql += " WITH LOCAL CHECK OPTION"
      end
      env.definition = sql
    end
  }

  [data.definition, data.view_type]
end