Module: SchemaComments::ConnectionAdapters::ConcreteAdapter
- Defined in:
- lib/schema_comments/connection_adapters.rb
Instance Method Summary collapse
- #add_column(table_name, column_name, type, options = {}) ⇒ Object
- #change_column(table_name, column_name, type, options = {}) ⇒ Object
- #create_table(table_name, options = {}, &block) ⇒ Object
- #drop_table(table_name, *args, &block) ⇒ Object
- #remove_column(table_name, *column_names) ⇒ Object
- #rename_column(table_name, column_name, new_column_name, options = {}) ⇒ Object
- #rename_table(table_name, new_name) ⇒ Object
Instance Method Details
#add_column(table_name, column_name, type, options = {}) ⇒ Object
119 120 121 122 123 124 |
# File 'lib/schema_comments/connection_adapters.rb', line 119 def add_column(table_name, column_name, type, = {}) comment = .delete(:comment) result = super(table_name, column_name, type, ) column_comment(table_name, column_name, comment) if comment result end |
#change_column(table_name, column_name, type, options = {}) ⇒ Object
126 127 128 129 130 131 132 133 134 |
# File 'lib/schema_comments/connection_adapters.rb', line 126 def change_column(table_name, column_name, type, = {}) comment = .delete(:comment) @ignore_drop_table = true result = super(table_name, column_name, type, ) column_comment(table_name, column_name, comment) if comment result ensure @ignore_drop_table = false end |
#create_table(table_name, options = {}, &block) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/schema_comments/connection_adapters.rb', line 75 def create_table(table_name, = {}, &block) table_def = nil result = super(table_name, ) do |t| table_def = t yield(t) end table_comment(table_name, [:comment]) unless [: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) ⇒ Object
88 89 90 91 92 |
# File 'lib/schema_comments/connection_adapters.rb', line 88 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) ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/schema_comments/connection_adapters.rb', line 100 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 = {}) ⇒ Object
136 137 138 139 140 141 142 |
# File 'lib/schema_comments/connection_adapters.rb', line 136 def rename_column(table_name, column_name, new_column_name, = {}) comment = .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) ⇒ Object
94 95 96 97 98 |
# File 'lib/schema_comments/connection_adapters.rb', line 94 def rename_table(table_name, new_name) result = super(table_name, new_name) update_schema_comments_table_name(table_name, new_name) result end |