const db = require('../models'); const Users = db.users; const Drones = db.drones; const FlightSchedules = db.flight_schedules; const Inventory = db.inventory; const MaintenanceReports = db.maintenance_reports; const DronesData = [ { serial_number: 'DRN-001', model: 'Phantom 4', // type code here for "relation_many" field }, { serial_number: 'DRN-002', model: 'Mavic Air 2', // type code here for "relation_many" field }, { serial_number: 'DRN-003', model: 'Inspire 2', // type code here for "relation_many" field }, ]; const FlightSchedulesData = [ { // type code here for "relation_one" field // type code here for "relation_one" field start_time: new Date('2023-10-06T08:00:00Z'), end_time: new Date('2023-10-06T10:00:00Z'), }, { // type code here for "relation_one" field // type code here for "relation_one" field start_time: new Date('2023-10-07T09:00:00Z'), end_time: new Date('2023-10-07T11:00:00Z'), }, { // type code here for "relation_one" field // type code here for "relation_one" field start_time: new Date('2023-10-08T07:30:00Z'), end_time: new Date('2023-10-08T09:30:00Z'), }, ]; const InventoryData = [ { part_name: 'Battery Pack', quantity: 50, // type code here for "relation_many" field }, { part_name: 'Propeller Set', quantity: 100, // type code here for "relation_many" field }, { part_name: 'Camera Lens', quantity: 30, // type code here for "relation_many" field }, ]; const MaintenanceReportsData = [ { // type code here for "relation_one" field // type code here for "relation_one" field reported_at: new Date('2023-10-01T10:00:00Z'), description: 'Battery issue detected', severity: 'high', }, { // type code here for "relation_one" field // type code here for "relation_one" field reported_at: new Date('2023-10-02T11:30:00Z'), description: 'Camera malfunction', severity: 'medium', }, { // type code here for "relation_one" field // type code here for "relation_one" field reported_at: new Date('2023-10-03T09:15:00Z'), description: 'Propeller damage', severity: 'high', }, ]; // Similar logic for "relation_many" // Similar logic for "relation_many" async function associateFlightScheduleWithDrone() { const relatedDrone0 = await Drones.findOne({ offset: Math.floor(Math.random() * (await Drones.count())), }); const FlightSchedule0 = await FlightSchedules.findOne({ order: [['id', 'ASC']], offset: 0, }); if (FlightSchedule0?.setDrone) { await FlightSchedule0.setDrone(relatedDrone0); } const relatedDrone1 = await Drones.findOne({ offset: Math.floor(Math.random() * (await Drones.count())), }); const FlightSchedule1 = await FlightSchedules.findOne({ order: [['id', 'ASC']], offset: 1, }); if (FlightSchedule1?.setDrone) { await FlightSchedule1.setDrone(relatedDrone1); } const relatedDrone2 = await Drones.findOne({ offset: Math.floor(Math.random() * (await Drones.count())), }); const FlightSchedule2 = await FlightSchedules.findOne({ order: [['id', 'ASC']], offset: 2, }); if (FlightSchedule2?.setDrone) { await FlightSchedule2.setDrone(relatedDrone2); } } async function associateFlightScheduleWithPilot() { const relatedPilot0 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const FlightSchedule0 = await FlightSchedules.findOne({ order: [['id', 'ASC']], offset: 0, }); if (FlightSchedule0?.setPilot) { await FlightSchedule0.setPilot(relatedPilot0); } const relatedPilot1 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const FlightSchedule1 = await FlightSchedules.findOne({ order: [['id', 'ASC']], offset: 1, }); if (FlightSchedule1?.setPilot) { await FlightSchedule1.setPilot(relatedPilot1); } const relatedPilot2 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const FlightSchedule2 = await FlightSchedules.findOne({ order: [['id', 'ASC']], offset: 2, }); if (FlightSchedule2?.setPilot) { await FlightSchedule2.setPilot(relatedPilot2); } } // Similar logic for "relation_many" async function associateMaintenanceReportWithDrone() { const relatedDrone0 = await Drones.findOne({ offset: Math.floor(Math.random() * (await Drones.count())), }); const MaintenanceReport0 = await MaintenanceReports.findOne({ order: [['id', 'ASC']], offset: 0, }); if (MaintenanceReport0?.setDrone) { await MaintenanceReport0.setDrone(relatedDrone0); } const relatedDrone1 = await Drones.findOne({ offset: Math.floor(Math.random() * (await Drones.count())), }); const MaintenanceReport1 = await MaintenanceReports.findOne({ order: [['id', 'ASC']], offset: 1, }); if (MaintenanceReport1?.setDrone) { await MaintenanceReport1.setDrone(relatedDrone1); } const relatedDrone2 = await Drones.findOne({ offset: Math.floor(Math.random() * (await Drones.count())), }); const MaintenanceReport2 = await MaintenanceReports.findOne({ order: [['id', 'ASC']], offset: 2, }); if (MaintenanceReport2?.setDrone) { await MaintenanceReport2.setDrone(relatedDrone2); } } async function associateMaintenanceReportWithReported_by() { const relatedReported_by0 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const MaintenanceReport0 = await MaintenanceReports.findOne({ order: [['id', 'ASC']], offset: 0, }); if (MaintenanceReport0?.setReported_by) { await MaintenanceReport0.setReported_by(relatedReported_by0); } const relatedReported_by1 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const MaintenanceReport1 = await MaintenanceReports.findOne({ order: [['id', 'ASC']], offset: 1, }); if (MaintenanceReport1?.setReported_by) { await MaintenanceReport1.setReported_by(relatedReported_by1); } const relatedReported_by2 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const MaintenanceReport2 = await MaintenanceReports.findOne({ order: [['id', 'ASC']], offset: 2, }); if (MaintenanceReport2?.setReported_by) { await MaintenanceReport2.setReported_by(relatedReported_by2); } } module.exports = { up: async (queryInterface, Sequelize) => { await Drones.bulkCreate(DronesData); await FlightSchedules.bulkCreate(FlightSchedulesData); await Inventory.bulkCreate(InventoryData); await MaintenanceReports.bulkCreate(MaintenanceReportsData); await Promise.all([ // Similar logic for "relation_many" // Similar logic for "relation_many" await associateFlightScheduleWithDrone(), await associateFlightScheduleWithPilot(), // Similar logic for "relation_many" await associateMaintenanceReportWithDrone(), await associateMaintenanceReportWithReported_by(), ]); }, down: async (queryInterface, Sequelize) => { await queryInterface.bulkDelete('drones', null, {}); await queryInterface.bulkDelete('flight_schedules', null, {}); await queryInterface.bulkDelete('inventory', null, {}); await queryInterface.bulkDelete('maintenance_reports', null, {}); }, };