2024-09-09 23:14:39 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Migrations::Converters::Base
|
2024-11-20 06:54:37 +08:00
|
|
|
class StepTracker
|
|
|
|
attr_reader :stats
|
2024-09-09 23:14:39 +08:00
|
|
|
|
|
|
|
def initialize
|
2024-11-20 06:54:37 +08:00
|
|
|
@stats = StepStats.new
|
|
|
|
reset_stats!
|
2024-09-09 23:14:39 +08:00
|
|
|
end
|
|
|
|
|
2024-11-20 06:54:37 +08:00
|
|
|
def reset_stats!
|
|
|
|
@stats.progress = 1
|
|
|
|
@stats.warning_count = 0
|
|
|
|
@stats.error_count = 0
|
|
|
|
end
|
|
|
|
|
|
|
|
def progress=(value)
|
|
|
|
@stats.progress = value
|
2024-09-09 23:14:39 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
def log_info(message, details: nil)
|
|
|
|
log(::Migrations::Database::IntermediateDB::LogEntry::INFO, message, details:)
|
|
|
|
end
|
|
|
|
|
|
|
|
def log_warning(message, exception: nil, details: nil)
|
2024-11-20 06:54:37 +08:00
|
|
|
@stats.warning_count += 1
|
2024-09-09 23:14:39 +08:00
|
|
|
log(::Migrations::Database::IntermediateDB::LogEntry::WARNING, message, exception:, details:)
|
|
|
|
end
|
|
|
|
|
|
|
|
def log_error(message, exception: nil, details: nil)
|
2024-11-20 06:54:37 +08:00
|
|
|
@stats.error_count += 1
|
2024-09-09 23:14:39 +08:00
|
|
|
log(::Migrations::Database::IntermediateDB::LogEntry::ERROR, message, exception:, details:)
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def log(type, message, exception: nil, details: nil)
|
|
|
|
::Migrations::Database::IntermediateDB::LogEntry.create!(
|
|
|
|
type:,
|
|
|
|
message:,
|
|
|
|
exception:,
|
|
|
|
details:,
|
|
|
|
)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|