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
-
#columns(table_name, name = nil, &block) ⇒ Object
TODO: columnsメソッドに第二引数移行がないので本来は消すべき?.
- #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
133 134 135 136 137 138 |
# File 'lib/schema_comments/connection_adapters.rb', line 133 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
140 141 142 143 144 145 146 147 148 |
# File 'lib/schema_comments/connection_adapters.rb', line 140 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 |
#columns(table_name, name = nil, &block) ⇒ Object
TODO: columnsメソッドに第二引数移行がないので本来は消すべき?
80 81 82 83 84 85 86 87 |
# File 'lib/schema_comments/connection_adapters.rb', line 80 def columns(table_name, name = nil, &block) result = super(table_name) column_comment_hash = column_comments(table_name) result.each do |column| column.comment = column_comment_hash[column.name] end result end |
#create_table(table_name, options = {}, &block) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/schema_comments/connection_adapters.rb', line 89 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
102 103 104 105 106 |
# File 'lib/schema_comments/connection_adapters.rb', line 102 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
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/schema_comments/connection_adapters.rb', line 114 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
150 151 152 153 154 155 156 |
# File 'lib/schema_comments/connection_adapters.rb', line 150 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
108 109 110 111 112 |
# File 'lib/schema_comments/connection_adapters.rb', line 108 def rename_table(table_name, new_name) result = super(table_name, new_name) update_schema_comments_table_name(table_name, new_name) result end |