Class: Pageflow::NestedRevisionComponentCopy::Model
- Inherits:
-
Struct
- Object
- Struct
- Pageflow::NestedRevisionComponentCopy::Model
- Defined in:
- app/models/pageflow/nested_revision_component_copy.rb
Class Method Summary collapse
Instance Method Summary collapse
- #insert_list ⇒ Object
- #join_as_new_on_matching_perma_id(foreign_key_value:, perma_id_offset:) ⇒ Object
- #join_as_old_on(id_value:) ⇒ Object
- #nested_models ⇒ Object
- #new_id ⇒ Object
- #new_table_alias ⇒ Object
- #old_foreign_key ⇒ Object
- #old_table_alias ⇒ Object
- #perma_id_column ⇒ Object
- #select_list(new_foreign_key_value:, perma_id_offset:) ⇒ Object
- #table_name ⇒ Object
Class Method Details
.for(revision_components:) ⇒ Object
170 171 172 173 174 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 170 def self.for(revision_components:) revision_components.map do |revision_component| Model.new(klass: revision_component, foreign_key: 'revision_id', level: 1) end end |
.for_nested_revision_components(klass, level: 1) ⇒ Object
176 177 178 179 180 181 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 176 def self.for_nested_revision_components(klass, level: 1) klass.nested_revision_component_collection_names.map do |collection_name| reflection = klass.reflect_on_association(collection_name) Model.new(klass: reflection.klass, foreign_key: reflection.foreign_key, level:) end end |
Instance Method Details
#insert_list ⇒ Object
216 217 218 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 216 def insert_list quoted_list(insert_columns) end |
#join_as_new_on_matching_perma_id(foreign_key_value:, perma_id_offset:) ⇒ Object
240 241 242 243 244 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 240 def join_as_new_on_matching_perma_id(foreign_key_value:, perma_id_offset:) "JOIN #{table_name} AS #{new_table_alias} " \ "ON #{new_table_alias}.#{foreign_key} = #{foreign_key_value} " \ "AND #{new_table_alias}.#{perma_id_column} = #{perma_id_expr(perma_id_offset)}" end |
#join_as_old_on(id_value:) ⇒ Object
235 236 237 238 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 235 def join_as_old_on(id_value:) "JOIN #{table_name} AS #{old_table_alias} " \ "ON #{old_table_alias}.id = #{id_value}" end |
#nested_models ⇒ Object
183 184 185 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 183 def nested_models Model.for_nested_revision_components(klass, level: level + 1) end |
#new_id ⇒ Object
203 204 205 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 203 def new_id "#{new_table_alias}.id" end |
#new_table_alias ⇒ Object
191 192 193 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 191 def new_table_alias "new_#{level}" end |
#old_foreign_key ⇒ Object
199 200 201 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 199 def old_foreign_key "#{old_table_alias}.#{foreign_key}" end |
#old_table_alias ⇒ Object
195 196 197 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 195 def old_table_alias "old_#{level}" end |
#perma_id_column ⇒ Object
207 208 209 210 211 212 213 214 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 207 def perma_id_column @perma_id_column ||= if klass.column_names.include?('file_perma_id') 'file_perma_id' else 'perma_id' end end |
#select_list(new_foreign_key_value:, perma_id_offset:) ⇒ Object
220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 220 def select_list(new_foreign_key_value:, perma_id_offset:) insert_columns.map { |column| case column when foreign_key new_foreign_key_value when 'created_at', 'updated_at' 'NOW()' when 'perma_id' perma_id_expr(perma_id_offset) else "#{old_table_alias}.#{column}" end }.join(', ') end |
#table_name ⇒ Object
187 188 189 |
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 187 def table_name klass.table_name end |