292 lines
6.0 KiB
JavaScript
292 lines
6.0 KiB
JavaScript
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, {});
|
|
},
|
|
};
|