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