34029/backend/src/db/seeders/20231127130745-sample-data.js
2025-09-12 06:57:03 +00:00

830 lines
20 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const HelpRequests = db.help_requests;
const Notifications = db.notifications;
const Services = db.services;
const Trucks = db.trucks;
const Companies = db.companies;
const HelpRequestsData = [
{
request_date: new Date('2023-10-01T08:30:00Z'),
status: 'InProgress',
// type code here for "relation_one" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
request_date: new Date('2023-10-02T09:00:00Z'),
status: 'Pending',
// type code here for "relation_one" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
request_date: new Date('2023-10-03T10:15:00Z'),
status: 'Pending',
// type code here for "relation_one" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
request_date: new Date('2023-10-04T11:45:00Z'),
status: 'InProgress',
// type code here for "relation_one" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
request_date: new Date('2023-10-05T12:30:00Z'),
status: 'InProgress',
// type code here for "relation_one" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
];
const NotificationsData = [
{
message: 'New help request received for truck ABC123.',
sent_at: new Date('2023-10-01T08:35:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
message: 'Help request for truck XYZ789 is now in progress.',
sent_at: new Date('2023-10-02T09:05:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
message: 'Help request for truck LMN456 has been completed.',
sent_at: new Date('2023-10-03T10:20:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
message: 'New help request received for truck DEF321.',
sent_at: new Date('2023-10-04T11:50:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
message: 'Help request for truck GHI654 is now in progress.',
sent_at: new Date('2023-10-05T12:35:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
];
const ServicesData = [
{
name: 'Tire Replacement',
description: 'Quick and efficient tire replacement service.',
price: 150,
// type code here for "relation_one" field
},
{
name: 'Engine Repair',
description: 'Comprehensive engine repair and maintenance.',
price: 500,
// type code here for "relation_one" field
},
{
name: 'Oil Change',
description: 'Regular oil change to keep your truck running smoothly.',
price: 75,
// type code here for "relation_one" field
},
{
name: 'Brake Service',
description: 'Complete brake inspection and repair.',
price: 200,
// type code here for "relation_one" field
},
{
name: 'Battery Replacement',
description: 'Fast battery replacement service.',
price: 120,
// type code here for "relation_one" field
},
];
const TrucksData = [
{
license_plate: 'ABC123',
model: 'Volvo FH16',
// type code here for "relation_one" field
// type code here for "relation_many" field
// type code here for "relation_one" field
},
{
license_plate: 'XYZ789',
model: 'Scania R450',
// type code here for "relation_one" field
// type code here for "relation_many" field
// type code here for "relation_one" field
},
{
license_plate: 'LMN456',
model: 'Mercedes-Benz Actros',
// type code here for "relation_one" field
// type code here for "relation_many" field
// type code here for "relation_one" field
},
{
license_plate: 'DEF321',
model: 'MAN TGX',
// type code here for "relation_one" field
// type code here for "relation_many" field
// type code here for "relation_one" field
},
{
license_plate: 'GHI654',
model: 'DAF XF',
// type code here for "relation_one" field
// type code here for "relation_many" field
// type code here for "relation_one" field
},
];
const CompaniesData = [
{
name: 'Logistics Co',
},
{
name: 'Transport Solutions',
},
{
name: 'Freight Masters',
},
{
name: 'Haulage Experts',
},
{
name: 'Cargo Carriers',
},
];
// Similar logic for "relation_many"
async function associateUserWithCompany() {
const relatedCompany0 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const User0 = await Users.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (User0?.setCompany) {
await User0.setCompany(relatedCompany0);
}
const relatedCompany1 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const User1 = await Users.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (User1?.setCompany) {
await User1.setCompany(relatedCompany1);
}
const relatedCompany2 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const User2 = await Users.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (User2?.setCompany) {
await User2.setCompany(relatedCompany2);
}
const relatedCompany3 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const User3 = await Users.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (User3?.setCompany) {
await User3.setCompany(relatedCompany3);
}
const relatedCompany4 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const User4 = await Users.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (User4?.setCompany) {
await User4.setCompany(relatedCompany4);
}
}
async function associateHelpRequestWithTruck() {
const relatedTruck0 = await Trucks.findOne({
offset: Math.floor(Math.random() * (await Trucks.count())),
});
const HelpRequest0 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (HelpRequest0?.setTruck) {
await HelpRequest0.setTruck(relatedTruck0);
}
const relatedTruck1 = await Trucks.findOne({
offset: Math.floor(Math.random() * (await Trucks.count())),
});
const HelpRequest1 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (HelpRequest1?.setTruck) {
await HelpRequest1.setTruck(relatedTruck1);
}
const relatedTruck2 = await Trucks.findOne({
offset: Math.floor(Math.random() * (await Trucks.count())),
});
const HelpRequest2 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (HelpRequest2?.setTruck) {
await HelpRequest2.setTruck(relatedTruck2);
}
const relatedTruck3 = await Trucks.findOne({
offset: Math.floor(Math.random() * (await Trucks.count())),
});
const HelpRequest3 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (HelpRequest3?.setTruck) {
await HelpRequest3.setTruck(relatedTruck3);
}
const relatedTruck4 = await Trucks.findOne({
offset: Math.floor(Math.random() * (await Trucks.count())),
});
const HelpRequest4 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (HelpRequest4?.setTruck) {
await HelpRequest4.setTruck(relatedTruck4);
}
}
async function associateHelpRequestWithResponder() {
const relatedResponder0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const HelpRequest0 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (HelpRequest0?.setResponder) {
await HelpRequest0.setResponder(relatedResponder0);
}
const relatedResponder1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const HelpRequest1 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (HelpRequest1?.setResponder) {
await HelpRequest1.setResponder(relatedResponder1);
}
const relatedResponder2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const HelpRequest2 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (HelpRequest2?.setResponder) {
await HelpRequest2.setResponder(relatedResponder2);
}
const relatedResponder3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const HelpRequest3 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (HelpRequest3?.setResponder) {
await HelpRequest3.setResponder(relatedResponder3);
}
const relatedResponder4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const HelpRequest4 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (HelpRequest4?.setResponder) {
await HelpRequest4.setResponder(relatedResponder4);
}
}
async function associateHelpRequestWithCompany() {
const relatedCompany0 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const HelpRequest0 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (HelpRequest0?.setCompany) {
await HelpRequest0.setCompany(relatedCompany0);
}
const relatedCompany1 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const HelpRequest1 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (HelpRequest1?.setCompany) {
await HelpRequest1.setCompany(relatedCompany1);
}
const relatedCompany2 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const HelpRequest2 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (HelpRequest2?.setCompany) {
await HelpRequest2.setCompany(relatedCompany2);
}
const relatedCompany3 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const HelpRequest3 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (HelpRequest3?.setCompany) {
await HelpRequest3.setCompany(relatedCompany3);
}
const relatedCompany4 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const HelpRequest4 = await HelpRequests.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (HelpRequest4?.setCompany) {
await HelpRequest4.setCompany(relatedCompany4);
}
}
async function associateNotificationWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Notification0 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Notification0?.setUser) {
await Notification0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Notification1 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Notification1?.setUser) {
await Notification1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Notification2 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Notification2?.setUser) {
await Notification2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Notification3 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Notification3?.setUser) {
await Notification3.setUser(relatedUser3);
}
const relatedUser4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Notification4 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Notification4?.setUser) {
await Notification4.setUser(relatedUser4);
}
}
async function associateNotificationWithCompany() {
const relatedCompany0 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Notification0 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Notification0?.setCompany) {
await Notification0.setCompany(relatedCompany0);
}
const relatedCompany1 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Notification1 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Notification1?.setCompany) {
await Notification1.setCompany(relatedCompany1);
}
const relatedCompany2 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Notification2 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Notification2?.setCompany) {
await Notification2.setCompany(relatedCompany2);
}
const relatedCompany3 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Notification3 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Notification3?.setCompany) {
await Notification3.setCompany(relatedCompany3);
}
const relatedCompany4 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Notification4 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Notification4?.setCompany) {
await Notification4.setCompany(relatedCompany4);
}
}
async function associateServiceWithCompany() {
const relatedCompany0 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Service0 = await Services.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Service0?.setCompany) {
await Service0.setCompany(relatedCompany0);
}
const relatedCompany1 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Service1 = await Services.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Service1?.setCompany) {
await Service1.setCompany(relatedCompany1);
}
const relatedCompany2 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Service2 = await Services.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Service2?.setCompany) {
await Service2.setCompany(relatedCompany2);
}
const relatedCompany3 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Service3 = await Services.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Service3?.setCompany) {
await Service3.setCompany(relatedCompany3);
}
const relatedCompany4 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Service4 = await Services.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Service4?.setCompany) {
await Service4.setCompany(relatedCompany4);
}
}
async function associateTruckWithCompany() {
const relatedCompany0 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Truck0 = await Trucks.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Truck0?.setCompany) {
await Truck0.setCompany(relatedCompany0);
}
const relatedCompany1 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Truck1 = await Trucks.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Truck1?.setCompany) {
await Truck1.setCompany(relatedCompany1);
}
const relatedCompany2 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Truck2 = await Trucks.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Truck2?.setCompany) {
await Truck2.setCompany(relatedCompany2);
}
const relatedCompany3 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Truck3 = await Trucks.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Truck3?.setCompany) {
await Truck3.setCompany(relatedCompany3);
}
const relatedCompany4 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Truck4 = await Trucks.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Truck4?.setCompany) {
await Truck4.setCompany(relatedCompany4);
}
}
// Similar logic for "relation_many"
async function associateTruckWithCompany() {
const relatedCompany0 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Truck0 = await Trucks.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Truck0?.setCompany) {
await Truck0.setCompany(relatedCompany0);
}
const relatedCompany1 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Truck1 = await Trucks.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Truck1?.setCompany) {
await Truck1.setCompany(relatedCompany1);
}
const relatedCompany2 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Truck2 = await Trucks.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Truck2?.setCompany) {
await Truck2.setCompany(relatedCompany2);
}
const relatedCompany3 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Truck3 = await Trucks.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Truck3?.setCompany) {
await Truck3.setCompany(relatedCompany3);
}
const relatedCompany4 = await Companies.findOne({
offset: Math.floor(Math.random() * (await Companies.count())),
});
const Truck4 = await Trucks.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Truck4?.setCompany) {
await Truck4.setCompany(relatedCompany4);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await HelpRequests.bulkCreate(HelpRequestsData);
await Notifications.bulkCreate(NotificationsData);
await Services.bulkCreate(ServicesData);
await Trucks.bulkCreate(TrucksData);
await Companies.bulkCreate(CompaniesData);
await Promise.all([
// Similar logic for "relation_many"
await associateUserWithCompany(),
await associateHelpRequestWithTruck(),
await associateHelpRequestWithResponder(),
await associateHelpRequestWithCompany(),
await associateNotificationWithUser(),
await associateNotificationWithCompany(),
await associateServiceWithCompany(),
await associateTruckWithCompany(),
// Similar logic for "relation_many"
await associateTruckWithCompany(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('help_requests', null, {});
await queryInterface.bulkDelete('notifications', null, {});
await queryInterface.bulkDelete('services', null, {});
await queryInterface.bulkDelete('trucks', null, {});
await queryInterface.bulkDelete('companies', null, {});
},
};