Module: SchemaPlus::Core::ActiveRecord::ConnectionAdapters::AbstractAdapter

Defined in:
lib/schema_plus/core/active_record/connection_adapters/abstract_adapter.rb,
lib/schema_plus/core/active_record/connection_adapters/abstract_adapter.rb,
lib/schema_plus/core/active_record/connection_adapters/abstract_adapter.rb

Defined Under Namespace

Modules: SchemaCreation

Instance Method Summary collapse

Instance Method Details

#add_column(table_name, name, type, **options) ⇒ Object



8
9
10
11
12
13
# File 'lib/schema_plus/core/active_record/connection_adapters/abstract_adapter.rb', line 8

def add_column(table_name, name, type, **options)
  options = options.deep_dup
  SchemaMonkey::Middleware::Migration::Column.start(caller: self, operation: :add, table_name: table_name, column_name: name, type: type, implements_reference: options.delete(:_implements_reference), options: options) do |env|
    super env.table_name, env.column_name, env.type, **env.options
  end
end

#add_index_options(table_name, column_names, **options) ⇒ Object



15
16
17
18
19
# File 'lib/schema_plus/core/active_record/connection_adapters/abstract_adapter.rb', line 15

def add_index_options(table_name, column_names, **options)
  SchemaMonkey::Middleware::Sql::IndexComponents.start(connection: self, table_name: table_name, column_names: Array.wrap(column_names), options: options.deep_dup, sql: SqlStruct::IndexComponents.new) { |env|
    env.sql.name, env.sql.type, env.sql.columns, env.sql.options, env.sql.algorithm, env.sql.using = super env.table_name, env.column_names, **env.options
  }.sql.to_h.values
end

#add_reference(table_name, name, **options) ⇒ Object



21
22
23
24
25
# File 'lib/schema_plus/core/active_record/connection_adapters/abstract_adapter.rb', line 21

def add_reference(table_name, name, **options)
  SchemaMonkey::Middleware::Migration::Column.start(caller: self, operation: :add, table_name: table_name, column_name: "#{name}_id", type: :reference, options: options.deep_dup) do |env|
    super env.table_name, env.column_name.sub(/_id$/, ''), **env.options.merge(_implements_reference: true)
  end
end

#create_table(table_name, **options, &block) ⇒ Object



27
28
29
30
31
# File 'lib/schema_plus/core/active_record/connection_adapters/abstract_adapter.rb', line 27

def create_table(table_name, **options, &block)
  SchemaMonkey::Middleware::Migration::CreateTable.start(connection: self, table_name: table_name, options: options.deep_dup, block: block) do |env|
    super env.table_name, **env.options, &env.block
  end
end

#drop_table(table_name, **options) ⇒ Object



33
34
35
36
37
# File 'lib/schema_plus/core/active_record/connection_adapters/abstract_adapter.rb', line 33

def drop_table(table_name, **options)
  SchemaMonkey::Middleware::Migration::DropTable.start(connection: self, table_name: table_name, options: options.dup) do |env|
    super env.table_name, **env.options
  end
end

#quoted_columns_for_index(column_names, options) ⇒ Object

replaced version to handle array of columns with expressions



45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/schema_plus/core/active_record/connection_adapters/abstract_adapter.rb', line 45

def quoted_columns_for_index(column_names, **options)
  output_columns = []

  column_names.each do |column|
    if column.is_a?(String) && column.include?('(')
      output_columns << column
    else
      quoted = {column.to_sym => quote_column_name(column).dup}
      output_columns.concat add_options_for_index_columns(quoted, **options).values
    end
  end

  output_columns
end