Module: SchemaPlus::Views::ActiveRecord::ConnectionAdapters::PostgresqlAdapter

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

Instance Method Summary collapse

Instance Method Details

#view_definition(view_name, name = nil) ⇒ Object

:nodoc:



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/schema_plus/views/active_record/connection_adapters/postgresql_adapter.rb', line 19

def view_definition(view_name, name = nil) #:nodoc:
  SchemaMonkey::Middleware::Schema::ViewDefinition.start(connection: self, view_name: view_name, query_name: name) { |env|
      result = env.connection.query(<<-SQL, name)
        SELECT pg_get_viewdef(oid)
          FROM pg_class
        WHERE relkind = 'v'
          AND relname = '#{env.view_name}'
      SQL
      row = result.first
      env.definition = row.first.chomp(';').strip unless row.nil?
  }.definition
end

#views(name = nil) ⇒ Object

:nodoc:



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/schema_plus/views/active_record/connection_adapters/postgresql_adapter.rb', line 6

def views(name = nil) #:nodoc:
  SchemaMonkey::Middleware::Schema::Views.start(connection: self, query_name: name, views: []) { |env|
    sql = <<-SQL
    SELECT viewname
      FROM pg_views
    WHERE schemaname = ANY (current_schemas(false))
    AND viewname NOT LIKE 'pg\_%'
    SQL
    sql += " AND schemaname != 'postgis'" if adapter_name == 'PostGIS'
    env.views += env.connection.query(sql, env.query_name).map { |row| row[0] }
  }.views
end