/* eslint-disable */
module.exports = {
  async up(queryInterface, Sequelize) {
    // Ensure column exists
    await queryInterface.sequelize.query(`
      ALTER TABLE falukant_data.vehicle
      ADD COLUMN IF NOT EXISTS condition integer;
    `);

    // Backfill nulls (legacy data)
    await queryInterface.sequelize.query(`
      UPDATE falukant_data.vehicle
      SET condition = 100
      WHERE condition IS NULL;
    `);

    // Clamp out-of-range values defensively
    await queryInterface.sequelize.query(`
      UPDATE falukant_data.vehicle
      SET condition = GREATEST(0, LEAST(100, condition))
      WHERE condition < 0 OR condition > 100;
    `);

    // Default + NOT NULL
    await queryInterface.sequelize.query(`
      ALTER TABLE falukant_data.vehicle
      ALTER COLUMN condition SET DEFAULT 100;
    `);
    await queryInterface.sequelize.query(`
      ALTER TABLE falukant_data.vehicle
      ALTER COLUMN condition SET NOT NULL;
    `);

    // Check constraint 0..100
    await queryInterface.sequelize.query(`
      ALTER TABLE falukant_data.vehicle
      DROP CONSTRAINT IF EXISTS vehicle_condition_0_100_chk;
    `);
    await queryInterface.sequelize.query(`
      ALTER TABLE falukant_data.vehicle
      ADD CONSTRAINT vehicle_condition_0_100_chk
      CHECK (condition >= 0 AND condition <= 100);
    `);
  },

  async down(queryInterface, Sequelize) {
    // Keep the column, but remove constraint/default to be reversible
    await queryInterface.sequelize.query(`
      ALTER TABLE falukant_data.vehicle
      DROP CONSTRAINT IF EXISTS vehicle_condition_0_100_chk;
    `);
    await queryInterface.sequelize.query(`
      ALTER TABLE falukant_data.vehicle
      ALTER COLUMN condition DROP DEFAULT;
    `);
    // NOT NULL not reverted to avoid introducing NULLs on rollback; can be adjusted if needed
  },
};


