31756/backend/src/db/seeders/20231127130745-sample-data.js
2025-05-24 10:38:34 +00:00

364 lines
8.0 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Activities = db.activities;
const Enquiries = db.enquiries;
const Itineraries = db.itineraries;
const ActivitiesData = [
{
activity_name: 'Eiffel Tower Visit',
// type code here for "images" field
top_details:
'Visit the iconic Eiffel Tower and enjoy the view from the top.',
bottom_details: "Don't forget to take pictures!",
// type code here for "relation_one" field
},
{
activity_name: 'Vatican Museum Tour',
// type code here for "images" field
top_details: 'Explore the Vatican Museums and see the Sistine Chapel.',
bottom_details: 'Guided tours available.',
// type code here for "relation_one" field
},
{
activity_name: 'Snorkeling in Maldives',
// type code here for "images" field
top_details: 'Experience the vibrant marine life of the Maldives.',
bottom_details: 'Equipment provided.',
// type code here for "relation_one" field
},
{
activity_name: 'Magic Kingdom Day',
// type code here for "images" field
top_details: "Spend a magical day at Disney's Magic Kingdom.",
bottom_details: 'Meet your favorite characters.',
// type code here for "relation_one" field
},
];
const EnquiriesData = [
{
customer_name: 'Anna Green',
email: 'anna.green@example.com',
message: 'Interested in a family trip to Europe.',
submitted_at: new Date('2023-10-01T12:00:00Z'),
},
{
customer_name: 'Tom Harris',
email: 'tom.harris@example.com',
message: 'Looking for a honeymoon package in Maldives.',
submitted_at: new Date('2023-10-02T14:30:00Z'),
},
{
customer_name: 'Lucy Brown',
email: 'lucy.brown@example.com',
message: 'Need a luxury vacation in Dubai.',
submitted_at: new Date('2023-10-03T09:45:00Z'),
},
{
customer_name: 'James White',
email: 'james.white@example.com',
message: 'Cultural tour of Japan for three people.',
submitted_at: new Date('2023-10-04T11:15:00Z'),
},
];
const ItinerariesData = [
{
title: 'European Adventure',
// type code here for "relation_one" field
customer_name: 'Alice Johnson',
contact_information: 'alice.johnson@example.com',
number_of_people: 4,
number_of_days: 10,
travel_start_date: new Date('2023-12-01T09:00:00Z'),
travel_end_date: new Date('2023-12-10T18:00:00Z'),
main_locations: 'Paris, Rome, Berlin',
start_point: 'Paris',
end_point: 'Berlin',
transfer_vehicle: 'Private Car',
food_preference: 'Vegetarian',
other_interests: 'Historical sites',
travel_theme: 'FamilywithKids',
// type code here for "relation_many" field
},
{
title: 'Honeymoon in Maldives',
// type code here for "relation_one" field
customer_name: 'Robert and Lisa',
contact_information: 'robert.lisa@example.com',
number_of_people: 2,
number_of_days: 7,
travel_start_date: new Date('2023-11-15T10:00:00Z'),
travel_end_date: new Date('2023-11-22T17:00:00Z'),
main_locations: 'Malé, Maafushi',
start_point: 'Malé',
end_point: 'Maafushi',
transfer_vehicle: 'Speedboat',
food_preference: 'Seafood',
other_interests: 'Beach relaxation',
travel_theme: 'Honeymoon',
// type code here for "relation_many" field
},
{
title: 'Family Fun in Orlando',
// type code here for "relation_one" field
customer_name: 'The Smith Family',
contact_information: 'smith.family@example.com',
number_of_people: 5,
number_of_days: 5,
travel_start_date: new Date('2023-12-20T08:00:00Z'),
travel_end_date: new Date('2023-12-25T20:00:00Z'),
main_locations: 'Disney World, Universal Studios',
start_point: 'Orlando',
end_point: 'Orlando',
transfer_vehicle: 'Rental Van',
food_preference: 'No preference',
other_interests: 'Theme parks',
travel_theme: 'FamilywithElders',
// type code here for "relation_many" field
},
{
title: 'Luxury Escape to Dubai',
// type code here for "relation_one" field
customer_name: 'Sophia Williams',
contact_information: 'sophia.williams@example.com',
number_of_people: 2,
number_of_days: 6,
travel_start_date: new Date('2023-11-05T09:00:00Z'),
travel_end_date: new Date('2023-11-11T19:00:00Z'),
main_locations: 'Burj Khalifa, Palm Jumeirah',
start_point: 'Dubai',
end_point: 'Dubai',
transfer_vehicle: 'Limousine',
food_preference: 'Halal',
other_interests: 'Shopping, luxury experiences',
travel_theme: 'Luxury',
// type code here for "relation_many" field
},
];
// Similar logic for "relation_many"
async function associateActivityWithItinerary() {
const relatedItinerary0 = await Itineraries.findOne({
offset: Math.floor(Math.random() * (await Itineraries.count())),
});
const Activity0 = await Activities.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Activity0?.setItinerary) {
await Activity0.setItinerary(relatedItinerary0);
}
const relatedItinerary1 = await Itineraries.findOne({
offset: Math.floor(Math.random() * (await Itineraries.count())),
});
const Activity1 = await Activities.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Activity1?.setItinerary) {
await Activity1.setItinerary(relatedItinerary1);
}
const relatedItinerary2 = await Itineraries.findOne({
offset: Math.floor(Math.random() * (await Itineraries.count())),
});
const Activity2 = await Activities.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Activity2?.setItinerary) {
await Activity2.setItinerary(relatedItinerary2);
}
const relatedItinerary3 = await Itineraries.findOne({
offset: Math.floor(Math.random() * (await Itineraries.count())),
});
const Activity3 = await Activities.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Activity3?.setItinerary) {
await Activity3.setItinerary(relatedItinerary3);
}
}
async function associateItineraryWithTravel_executive() {
const relatedTravel_executive0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Itinerary0 = await Itineraries.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Itinerary0?.setTravel_executive) {
await Itinerary0.setTravel_executive(relatedTravel_executive0);
}
const relatedTravel_executive1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Itinerary1 = await Itineraries.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Itinerary1?.setTravel_executive) {
await Itinerary1.setTravel_executive(relatedTravel_executive1);
}
const relatedTravel_executive2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Itinerary2 = await Itineraries.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Itinerary2?.setTravel_executive) {
await Itinerary2.setTravel_executive(relatedTravel_executive2);
}
const relatedTravel_executive3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Itinerary3 = await Itineraries.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Itinerary3?.setTravel_executive) {
await Itinerary3.setTravel_executive(relatedTravel_executive3);
}
}
// Similar logic for "relation_many"
module.exports = {
up: async (queryInterface, Sequelize) => {
await Activities.bulkCreate(ActivitiesData);
await Enquiries.bulkCreate(EnquiriesData);
await Itineraries.bulkCreate(ItinerariesData);
await Promise.all([
// Similar logic for "relation_many"
await associateActivityWithItinerary(),
await associateItineraryWithTravel_executive(),
// Similar logic for "relation_many"
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('activities', null, {});
await queryInterface.bulkDelete('enquiries', null, {});
await queryInterface.bulkDelete('itineraries', null, {});
},
};