31 lines
1.0 KiB
Ruby
31 lines
1.0 KiB
Ruby
class AddStatusTrackingToMaintenanceSchedules < ActiveRecord::Migration[8.1]
|
|
def change
|
|
add_column :maintenance_schedules, :baseline_odometer, :integer
|
|
add_column :maintenance_schedules, :baseline_date, :date
|
|
add_column :maintenance_schedules, :active, :boolean, default: true, null: false
|
|
add_column :maintenance_schedules, :last_status, :string
|
|
add_column :maintenance_schedules, :last_status_changed_at, :datetime
|
|
|
|
reversible do |dir|
|
|
dir.up do
|
|
execute <<~SQL.squish
|
|
UPDATE maintenance_schedules
|
|
SET baseline_odometer = (
|
|
SELECT vehicles.current_odometer
|
|
FROM vehicles
|
|
WHERE vehicles.id = maintenance_schedules.vehicle_id
|
|
)
|
|
SQL
|
|
|
|
execute <<~SQL.squish
|
|
UPDATE maintenance_schedules
|
|
SET baseline_date = DATE(created_at)
|
|
SQL
|
|
end
|
|
end
|
|
|
|
change_column_null :maintenance_schedules, :baseline_odometer, false
|
|
change_column_null :maintenance_schedules, :baseline_date, false
|
|
end
|
|
end
|