Update condition handling in FalukantService and syncDatabase utility for legacy data
- Enhanced condition processing in FalukantService to clamp values between 0 and 100, ensuring UI displays valid data. - Implemented database cleanup in syncDatabase utility to set NULL conditions to 100 and clamp out-of-range values, improving data integrity.
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
/* 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
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user