Sha256: 9db38fd578b5029705f01ea0816b5769fee72c1ce5d220017474187b3c6e0ccf

Contents?: true

Size: 1.29 KB

Versions: 2

Compression:

Stored size: 1.29 KB

Contents

module SchemaPlus::Views
  module ActiveRecord
    module ConnectionAdapters
      module Mysql2Adapter

        def views(name = nil)
          SchemaMonkey::Middleware::Schema::Views.start(connection: self, query_name: name, views: []) { |env|
            select_all("SELECT table_name FROM information_schema.views WHERE table_schema = SCHEMA()", env.query_name).each do |row|
              env.views << row["table_name"]
            end
          }.views
        end

        def view_definition(view_name, name = nil)
          SchemaMonkey::Middleware::Schema::ViewDefinition.start(connection: self, view_name: view_name, query_name: name) { |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
          }.definition
        end

      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
schema_plus_views-0.3.1 lib/schema_plus/views/active_record/connection_adapters/mysql2_adapter.rb
schema_plus_views-0.3.0 lib/schema_plus/views/active_record/connection_adapters/mysql2_adapter.rb