module SchemaComments::ConnectionAdapters::ConcreteAdapter

Public Instance Methods

add_column(table_name, column_name, type, options = {}) click to toggle source
Calls superclass method
# File lib/schema_comments/connection_adapters.rb, line 118
def add_column(table_name, column_name, type, options = {})
  comment = options.delete(:comment)
  result = super(table_name, column_name, type, options)
  column_comment(table_name, column_name, comment) if comment
  result
end
change_column(table_name, column_name, type, options = {}) click to toggle source
Calls superclass method
# File lib/schema_comments/connection_adapters.rb, line 125
def change_column(table_name, column_name, type, options = {})
  comment = options.delete(:comment)
  @ignore_drop_table = true
  result = super(table_name, column_name, type, options)
  column_comment(table_name, column_name, comment) if comment
  result
ensure
  @ignore_drop_table = false
end
create_table(table_name, options = {}) { |t| ... } click to toggle source
Calls superclass method
# File lib/schema_comments/connection_adapters.rb, line 74
def create_table(table_name, options = {}, &block)
  table_def = nil
  result = super(table_name, options) do |t|
    table_def = t
    yield(t)
  end
  table_comment(table_name, options[:comment]) unless options[:comment].blank?
  table_def.columns.each do |col|
    column_comment(table_name, col.name, col.comment) unless col.comment.blank?
  end
  result
end
drop_table(table_name, *args, &block) click to toggle source
Calls superclass method
# File lib/schema_comments/connection_adapters.rb, line 87
def drop_table(table_name, *args, &block)
  result = super(table_name, *args)
  delete_schema_comments(table_name) unless @ignore_drop_table
  result
end
remove_column(table_name, *column_names) click to toggle source
Calls superclass method
# File lib/schema_comments/connection_adapters.rb, line 99
def remove_column(table_name, *column_names)
  # sqlite3ではremove_columnがないので、以下のフローでスキーマ更新します。
  # 1. CREATE TEMPORARY TABLE "altered_xxxxxx" (・・・)
  # 2. PRAGMA index_list("xxxxxx")
  # 3. DROP TABLE "xxxxxx"
  # 4. CREATE TABLE "xxxxxx"
  # 5. PRAGMA index_list("altered_xxxxxx")
  # 6. DROP TABLE "altered_xxxxxx"
  #
  # このdrop tableの際に、schema_commentsを変更しないようにフラグを立てています。
  @ignore_drop_table = true
  super(table_name, *column_names)
  column_names.each do |column_name|
    delete_schema_comments(table_name, column_name)
  end
ensure
  @ignore_drop_table = false
end
rename_column(table_name, column_name, new_column_name, options = {}) click to toggle source
Calls superclass method
# File lib/schema_comments/connection_adapters.rb, line 135
def rename_column(table_name, column_name, new_column_name, options = {})
  comment = options.delete(:comment)
  result = super(table_name, column_name, new_column_name)
  update_schema_comments_column_name(table_name, column_name, new_column_name)
  column_comment(table_name, new_column_name, comment) if comment
  result
end
rename_table(table_name, new_name) click to toggle source
Calls superclass method
# File lib/schema_comments/connection_adapters.rb, line 93
def rename_table(table_name, new_name)
  result = super(table_name, new_name)
  update_schema_comments_table_name(table_name, new_name)
  result
end