'use strict'; module.exports = { async up(queryInterface, Sequelize) { try { // Check if tables exist first const tables = await queryInterface.showAllTables(); // Handle drone_detections table if (!tables.includes('drone_detections')) { console.log('⚠️ drone_detections table does not exist yet, skipping raw_payload migration for this table...'); } else { // Check if raw_payload column exists in drone_detections before adding const droneDetectionsTable = await queryInterface.describeTable('drone_detections'); if (!droneDetectionsTable.raw_payload) { await queryInterface.addColumn('drone_detections', 'raw_payload', { type: Sequelize.JSON, allowNull: true, comment: 'Complete raw payload received from detector (for debugging)' }); console.log('✅ Added raw_payload field to drone_detections table'); } else { console.log('⏭️ raw_payload field already exists in drone_detections table'); } } // Handle heartbeats table if (!tables.includes('heartbeats')) { console.log('⚠️ heartbeats table does not exist yet, skipping raw_payload migration for this table...'); } else { // Check if raw_payload column exists in heartbeats before adding const heartbeatsTable = await queryInterface.describeTable('heartbeats'); if (!heartbeatsTable.raw_payload) { await queryInterface.addColumn('heartbeats', 'raw_payload', { type: Sequelize.JSON, allowNull: true, comment: 'Complete raw payload received from detector (for debugging)' }); console.log('✅ Added raw_payload field to heartbeats table'); } else { console.log('⏭️ raw_payload field already exists in heartbeats table'); } } } catch (error) { console.log('⚠️ Migration skipped - tables may not exist yet:', error.message); // Don't throw error, just skip this migration if tables don't exist } }, async down(queryInterface, Sequelize) { // Remove raw_payload column from drone_detections table const droneDetectionsTable = await queryInterface.describeTable('drone_detections'); if (droneDetectionsTable.raw_payload) { await queryInterface.removeColumn('drone_detections', 'raw_payload'); console.log('✅ Removed raw_payload field from drone_detections table'); } // Remove raw_payload column from heartbeats table const heartbeatsTable = await queryInterface.describeTable('heartbeats'); if (heartbeatsTable.raw_payload) { await queryInterface.removeColumn('heartbeats', 'raw_payload'); console.log('✅ Removed raw_payload field from heartbeats table'); } } };