Class: Pageflow::NestedRevisionComponentCopy::Model

Inherits:
Struct
  • Object
show all
Defined in:
app/models/pageflow/nested_revision_component_copy.rb

Class Method Summary collapse

Instance Method Summary collapse

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_listObject



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_modelsObject



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_idObject



203
204
205
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 203

def new_id
  "#{new_table_alias}.id"
end

#new_table_aliasObject



191
192
193
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 191

def new_table_alias
  "new_#{level}"
end

#old_foreign_keyObject



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_aliasObject



195
196
197
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 195

def old_table_alias
  "old_#{level}"
end

#perma_id_columnObject



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_nameObject



187
188
189
# File 'app/models/pageflow/nested_revision_component_copy.rb', line 187

def table_name
  klass.table_name
end