Sha256: 75847f507b4161ed11e4c7f8517a8b1f5a65bf7d2f193520f0ba624e88455102

Contents?: true

Size: 1.56 KB

Versions: 5

Compression:

Stored size: 1.56 KB

Contents

module Exodus
  class MigrationStatus
    include MongoMapper::EmbeddedDocument

    key :message,                     String
    key :current_status,  						Integer, :default => 0
    key :execution_time,              Float, :default => 0
    key :last_succesful_completion,   Time
    key :direction,                   String, :default => Migration::UP
    key :arguments, 									Hash, :default => {}

    embedded_in :migration
    has_one :error, :class_name => "Exodus::MigrationError", :autosave => true

    def direction_to_i
      self.direction == Migration::UP ? 1 : -1
    end

    # Checks if a status has been processed
    # a Status has been processed when:
    # The current status is superior or equal to the given status and the migration direction is UP
    # The current status is inferior or equal to the given status and the migration direction is DOWN
    def status_processed?(migration_direction, status_to_process)
    	(migration_direction == Migration::UP && current_status >= status_to_process) || (migration_direction == Migration::DOWN && current_status <= status_to_process)
    end

    def to_string
      "\t#{direction}\t\t #{current_status} \t\t #{arguments}\t\t #{last_succesful_completion} \t\t #{message}"
    end

    def to_a
      [direction, current_status, arguments, last_succesful_completion, message]
    end

    def to_a_string
      self.to_a.map(&:to_s)
    end

    # Resets a status
    def reset!
      self.message = nil
      self.current_status = 0
      self.execution_time = 0
      self.last_succesful_completion = nil
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
exodus-1.1.7 lib/exodus/migrations/migration_status.rb
exodus-1.1.6 lib/exodus/migrations/migration_status.rb
exodus-1.1.5 lib/exodus/migrations/migration_status.rb
exodus-1.1.4 lib/exodus/migrations/migration_status.rb
exodus-1.1.3 lib/exodus/migrations/migration_status.rb