Class: DBGeni::MigrationList

Inherits:
Object
  • Object
show all
Defined in:
lib/dbgeni/migration_list.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(migration_directory) ⇒ MigrationList

Returns a new instance of MigrationList.

[View source]

19
20
21
22
# File 'lib/dbgeni/migration_list.rb', line 19

def initialize(migration_directory)
  @migration_directory = migration_directory
  file_list
end

Instance Attribute Details

#migration_directoryObject (readonly)

Returns the value of attribute migration_directory.


6
7
8
# File 'lib/dbgeni/migration_list.rb', line 6

def migration_directory
  @migration_directory
end

#migrationsObject (readonly)

Returns the value of attribute migrations.


5
6
7
# File 'lib/dbgeni/migration_list.rb', line 5

def migrations
  @migrations
end

Class Method Details

.new_dml_migrations(migration_directory) ⇒ Object

This is a bit of a hack. DML migrations reuse all of migrations, infact they were forced in later as an afterthought, so each migration will initially have a type of ‘Migration’. This changes it to DML.

[View source]

11
12
13
14
15
16
17
# File 'lib/dbgeni/migration_list.rb', line 11

def self.new_dml_migrations(migration_directory)
  obj = self.new(migration_directory)
  obj.migrations.each do |m|
    m.migration_type = 'DML'
  end
  obj
end

Instance Method Details

#applied(config, connection) ⇒ Object

Returns an array of MIGRATIONS that have been applied ordered by oldest first

[View source]

26
27
28
# File 'lib/dbgeni/migration_list.rb', line 26

def applied(config, connection)
  migrations_with_status(config, connection, DBGeni::Migration::COMPLETED)
end

#applied_and_broken(config, connection) ⇒ Object

[View source]

38
39
40
41
42
43
# File 'lib/dbgeni/migration_list.rb', line 38

def applied_and_broken(config, connection)
  migrations_with_status(config, connection,
                         DBGeni::Migration::COMPLETED,
                         DBGeni::Migration::FAILED,
                         DBGeni::Migration::PENDING)
end

#list(list_of_migrations, config, connection) ⇒ Object

[View source]

45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/dbgeni/migration_list.rb', line 45

def list(list_of_migrations, config, connection)
  valid_migrations = []
  list_of_migrations.each do |m|
    mig_obj = Migration.initialize_from_internal_name(@migration_directory, m)
    if i = @migrations.index(mig_obj)
      valid_migrations.push @migrations[i]
    else
      raise DBGeni::MigrationFileNotExist, m
    end
  end
  valid_migrations.sort {|x,y|
    x.migration_file <=> y.migration_file
  }
end

#migrations_with_status(config, connection, *args) ⇒ Object

[View source]

61
62
63
64
65
66
67
# File 'lib/dbgeni/migration_list.rb', line 61

def migrations_with_status(config, connection, *args)
  migrations = @migrations.select{|m|
    args.include? m.status(config, connection)
  }.sort {|x,y|
    x.migration_file <=> y.migration_file
  }
end

#outstanding(config, connection) ⇒ Object

[View source]

30
31
32
33
34
35
36
# File 'lib/dbgeni/migration_list.rb', line 30

def outstanding(config, connection)
  migrations_with_status(config, connection,
                         DBGeni::Migration::NEW,
                         DBGeni::Migration::ROLLEDBACK,
                         DBGeni::Migration::FAILED,
                         DBGeni::Migration::PENDING)
end