Class: ViewModel::Migrator

Inherits:
Object
  • Object
show all
Defined in:
lib/view_model/migrator.rb

Direct Known Subclasses

DownMigrator, UpMigrator

Constant Summary collapse

EXCLUDE_FROM_MIGRATION =
'_exclude_from_migration'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(required_versions) ⇒ Migrator

Returns a new instance of Migrator.



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/view_model/migrator.rb', line 26

def initialize(required_versions)
  @paths = required_versions.each_with_object({}) do |(viewmodel_class, required_version), h|
    if required_version != viewmodel_class.schema_version
      path = viewmodel_class.migration_path(from: required_version, to: viewmodel_class.schema_version)
      h[viewmodel_class.view_name] = path
    end
  end

  @versions = required_versions.each_with_object({}) do |(viewmodel_class, required_version), h|
    h[viewmodel_class.view_name] = [required_version, viewmodel_class.schema_version]
  end
end

Class Method Details

.migrated_deep_schema_version(viewmodel_class, required_versions, include_referenced: true) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/view_model/migrator.rb', line 8

def migrated_deep_schema_version(viewmodel_class, required_versions, include_referenced: true)
  deep_schema_version = viewmodel_class.deep_schema_version(include_referenced: include_referenced)

  if required_versions.present?
    deep_schema_version = deep_schema_version.dup

    required_versions.each do |required_vm_class, required_version|
      name = required_vm_class.view_name
      if deep_schema_version.has_key?(name)
        deep_schema_version[name] = required_version
      end
    end
  end

  deep_schema_version
end

Instance Method Details

#migrate!(serialization) ⇒ Object



39
40
41
42
# File 'lib/view_model/migrator.rb', line 39

def migrate!(serialization)
  migrate_tree!(serialization, references: serialization['references'] || {})
  GarbageCollection.garbage_collect_references!(serialization)
end