Module: Legion::Extensions::Data

Includes:
Helpers::Data, Helpers::Logger
Defined in:
lib/legion/extensions/data.rb,
lib/legion/extensions/data/model.rb,
lib/legion/extensions/data/migrator.rb

Defined Under Namespace

Modules: Model Classes: Migrator

Instance Method Summary collapse

Methods included from Helpers::Logger

#handle_exception, #log

Methods included from Helpers::Data

#data_class, #data_path, #models_class

Methods included from Helpers::Base

#actor_class, #actor_const, #actor_name, #calling_class, #calling_class_array, #from_json, #full_path, #lex_class, #lex_const, #lex_name, #normalize, #runner_class, #runner_const, #runner_name, #to_dotted_hash

Instance Method Details

#buildObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/legion/extensions/data.rb', line 10

def build
  Legion::Logging.fatal 'testing inside run'
  @models = []
  @migrations = []
  if Dir[File.expand_path("#{data_path}/migrations/*.rb")].count.positive?
    log.debug('Has migrations, checking status')
    run
  end

  models = Dir[File.expand_path("#{data_path}/models/*.rb")]
  if models.count.positive?
    log.debug('Including LEX models')
    models.each do |file|
      require file
    end

    models_class.constants.select do |model|
      models_class.const_get(model).extend Legion::Extensions::Data::Model
    end
  end

  true
end

#extension_modelObject



34
35
36
# File 'lib/legion/extensions/data.rb', line 34

def extension_model
  Legion::Data::Model::Extension[namespace: lex_class.to_s]
end

#migrate_classObject



46
47
48
# File 'lib/legion/extensions/data.rb', line 46

def migrate_class
  @migrate_class ||= Legion::Extensions::Data::Migrator.new(migrations_path, lex_class.to_s, lex_name)
end

#migrations_pathObject



42
43
44
# File 'lib/legion/extensions/data.rb', line 42

def migrations_path
  "#{data_path}/migrations/"
end

#runObject



50
51
52
53
54
55
56
57
58
# File 'lib/legion/extensions/data.rb', line 50

def run
  Legion::Logging.fatal 'testing inside run'

  return true if migrate_class.is_current?

  log.debug('Running LEX schema migrator')
  results = migrate_class.run
  extension_model.update(schema_version: results)
end

#schema_versionObject



38
39
40
# File 'lib/legion/extensions/data.rb', line 38

def schema_version
  extension_model.values[:schema_version]
end