Module: Switchman::ActiveRecord::PostgreSQLAdapter

Defined in:
lib/switchman/active_record/postgresql_adapter.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



4
5
6
7
# File 'lib/switchman/active_record/postgresql_adapter.rb', line 4

def self.included(klass)
  klass::NATIVE_DATABASE_TYPES[:primary_key] = "bigserial primary key".freeze
  klass.send(:remove_method, :quote_table_name) if ::Rails.version < '4' && klass.instance_method(:quote_table_name).owner == klass
end

Instance Method Details

#current_schemasObject



9
10
11
# File 'lib/switchman/active_record/postgresql_adapter.rb', line 9

def current_schemas
  select_values("SELECT * FROM unnest(current_schemas(false))")
end

#quote_table_name(name) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/switchman/active_record/postgresql_adapter.rb', line 13

def quote_table_name name
  if ::Rails.version < '4.2'
    schema, name_part = extract_pg_identifier_from_name(name.to_s)

    if !name_part && @config[:use_qualified_names] && shard.name
      schema, name_part = shard.name, schema
    end

    unless name_part
      quote_column_name(schema)
    else
      table_name, name_part = extract_pg_identifier_from_name(name_part)
      "#{quote_column_name(schema)}.#{quote_column_name(table_name)}"
    end
  else
    name = Utils.extract_schema_qualified_name(name.to_s)
    if !name.schema && @config[:use_qualified_names]
      name.instance_variable_set(:@schema, shard.name)
    end
    name.quoted
  end
end