const db = require('../models'); const Users = db.users; const Ads = db.ads; const Categories = db.categories; const Reviews = db.reviews; const Services = db.services; const AdsData = [ { title: 'Summer Sale', content: 'Get 20% off on all services this summer!', start_date: new Date('2023-06-01T00:00:00Z'), end_date: new Date('2023-08-31T23:59:59Z'), type: 'banner', }, { title: 'New Year Offer', content: 'Start the year with a clean home!', start_date: new Date('2024-01-01T00:00:00Z'), end_date: new Date('2024-01-31T23:59:59Z'), type: 'banner', }, { title: 'Spring Cleaning', content: 'Special rates for spring cleaning services.', start_date: new Date('2023-03-01T00:00:00Z'), end_date: new Date('2023-03-31T23:59:59Z'), type: 'sliding_banner', }, ]; const CategoriesData = [ { name: 'Home Services', // type code here for "relation_many" field }, { name: 'Outdoor Services', // type code here for "relation_many" field }, { name: 'Maintenance', // type code here for "relation_many" field }, ]; const ReviewsData = [ { // type code here for "relation_one" field // type code here for "relation_one" field rating: 5, comment: 'Excellent service, very professional!', }, { // type code here for "relation_one" field // type code here for "relation_one" field rating: 4, comment: 'Good job, but a bit late.', }, { // type code here for "relation_one" field // type code here for "relation_one" field rating: 5, comment: 'Quick and efficient work.', }, ]; const ServicesData = [ { name: 'Plumbing', description: 'Fixing leaks and installing pipes', // type code here for "relation_one" field distance: 5.2, // type code here for "images" field // type code here for "relation_many" field }, { name: 'Gardening', description: 'Lawn mowing and garden maintenance', // type code here for "relation_one" field distance: 3.8, // type code here for "images" field // type code here for "relation_many" field }, { name: 'Electrical', description: 'Wiring and electrical repairs', // type code here for "relation_one" field distance: 7.1, // type code here for "images" field // type code here for "relation_many" field }, ]; // Similar logic for "relation_many" // Similar logic for "relation_many" async function associateReviewWithService() { const relatedService0 = await Services.findOne({ offset: Math.floor(Math.random() * (await Services.count())), }); const Review0 = await Reviews.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Review0?.setService) { await Review0.setService(relatedService0); } const relatedService1 = await Services.findOne({ offset: Math.floor(Math.random() * (await Services.count())), }); const Review1 = await Reviews.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Review1?.setService) { await Review1.setService(relatedService1); } const relatedService2 = await Services.findOne({ offset: Math.floor(Math.random() * (await Services.count())), }); const Review2 = await Reviews.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Review2?.setService) { await Review2.setService(relatedService2); } } async function associateReviewWithUser() { const relatedUser0 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Review0 = await Reviews.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Review0?.setUser) { await Review0.setUser(relatedUser0); } const relatedUser1 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Review1 = await Reviews.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Review1?.setUser) { await Review1.setUser(relatedUser1); } const relatedUser2 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Review2 = await Reviews.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Review2?.setUser) { await Review2.setUser(relatedUser2); } } async function associateServiceWithProvider() { const relatedProvider0 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Service0 = await Services.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Service0?.setProvider) { await Service0.setProvider(relatedProvider0); } const relatedProvider1 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Service1 = await Services.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Service1?.setProvider) { await Service1.setProvider(relatedProvider1); } const relatedProvider2 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Service2 = await Services.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Service2?.setProvider) { await Service2.setProvider(relatedProvider2); } } // Similar logic for "relation_many" module.exports = { up: async (queryInterface, Sequelize) => { await Ads.bulkCreate(AdsData); await Categories.bulkCreate(CategoriesData); await Reviews.bulkCreate(ReviewsData); await Services.bulkCreate(ServicesData); await Promise.all([ // Similar logic for "relation_many" // Similar logic for "relation_many" await associateReviewWithService(), await associateReviewWithUser(), await associateServiceWithProvider(), // Similar logic for "relation_many" ]); }, down: async (queryInterface, Sequelize) => { await queryInterface.bulkDelete('ads', null, {}); await queryInterface.bulkDelete('categories', null, {}); await queryInterface.bulkDelete('reviews', null, {}); await queryInterface.bulkDelete('services', null, {}); }, };