Module: JunglePath::DBAccess::Meta::Schema

Defined in:
lib/jungle_path/db_access/meta/schema.rb

Class Method Summary collapse

Class Method Details

.create(table_subclasses, db_config, logger = $stdout) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/jungle_path/db_access/meta/schema.rb', line 12

def self.create(table_subclasses, db_config, logger=$stdout)
  puts "JunglePath::DBAccess::Meta::Schema.create..."
  db = JunglePath::DBAccess::IO.connection_from_config(db_config)
  db.loggers << Logger.new(logger)
  schema = JunglePath::DBModel::Schema.new(db)
  table_subclasses.each do |table|
if table.is_view?
      puts "create view: #{table.table_name}"
      db.run(table.view.create)
    else
      puts "create table: #{table.table_name}"
      schema.create_table table
    end
  end
end

.set_version(schema_info_class, db_config, schema_initial_version) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/jungle_path/db_access/meta/schema.rb', line 28

def self.set_version schema_info_class, db_config, schema_initial_version
  # set starting version numnber
  db = JunglePath::DBAccess::IO::DB.new(db_config)
  db.schema.create_table schema_info_class
  if schema_initial_version
    schema_info = schema_info_class.new({version: schema_initial_version})
    db.insert._model(schema_info)
  end
end

.set_version_to_latest(schema_info_class, db_config, migrations_path) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/jungle_path/db_access/meta/schema.rb', line 38

def self.set_version_to_latest schema_info_class, db_config, migrations_path
  version = 0
  migration_files = Dir.glob(File.join(migrations_path, "*.rb"))
  migration_files.each do |file_name|
    puts file_name
    parts = File.basename(file_name).split('_')
    if parts.length > 0
      value = parts[0].to_i
      version = value if value > version
    end
  end
  set_version schema_info_class, db_config, version
end