module RailsSqlViews4::ConnectionAdapters::PostgreSQLAdapter

Public Class Methods

included(base) click to toggle source
# File lib/rails_sql_views4/connection_adapters/postgresql_adapter.rb, line 4
def self.included(base)
  base.alias_method_chain :tables, :views_included
end

Public Instance Methods

base_tables(name = nil) click to toggle source
# File lib/rails_sql_views4/connection_adapters/postgresql_adapter.rb, line 34
      def base_tables(name = nil)
        q = <<-SQL
        SELECT table_name, table_type
          FROM information_schema.tables
         WHERE table_schema IN (#{schemas})
           AND table_type = 'BASE TABLE'
        SQL
        
        query(q, name).map { |row| row[0] }
      end
Also aliased as: nonview_tables
nonview_tables(name = nil)
Alias for: base_tables
supports_views?() click to toggle source

Returns true as this adapter supports views.

# File lib/rails_sql_views4/connection_adapters/postgresql_adapter.rb, line 8
def supports_views?
  true
end
tables_with_views_included(name = nil) click to toggle source
# File lib/rails_sql_views4/connection_adapters/postgresql_adapter.rb, line 12
      def tables_with_views_included(name = nil)
        q = <<-SQL
        SELECT table_name, table_type
          FROM information_schema.tables
         WHERE table_schema IN (#{schemas})
           AND table_type IN ('BASE TABLE', 'VIEW')
        SQL

        query(q, name).map { |row| row[0] }
      end
view_select_statement(view, name = nil) click to toggle source
# File lib/rails_sql_views4/connection_adapters/postgresql_adapter.rb, line 57
      def view_select_statement(view, name = nil)
        q = <<-SQL
        SELECT view_definition
          FROM information_schema.views 
         WHERE table_catalog = (SELECT catalog_name FROM information_schema.information_schema_catalog_name)
           AND table_schema IN (#{schemas})
           AND table_name = '#{view}'
        SQL
        
        # TODO
        # puts in postgres adapter ??? not in SQLITE ?
        # select_value(q, name) or raise "No view called #{view} found"
        select_value(q, name).gsub("CREATE VIEW #{view} AS ", "") or raise "No view called #{view} found"
        
      end

Private Instance Methods

schemas() click to toggle source
# File lib/rails_sql_views4/connection_adapters/postgresql_adapter.rb, line 75
def schemas
  schema_search_path.split(/,/).map { |p| quote(p) }.join(',')
end