33315/backend/src/db/seeders/20231127130745-sample-data.js
2025-08-10 22:37:47 +00:00

587 lines
13 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Forums = db.forums;
const Merchants = db.merchants;
const Notifications = db.notifications;
const Posts = db.posts;
const Residents = db.residents;
const Services = db.services;
const Subscribers = db.subscribers;
const ForumsData = [
{
title: 'Community Events',
// type code here for "relation_many" field
},
{
title: 'Maintenance Issues',
// type code here for "relation_many" field
},
{
title: 'Local Services',
// type code here for "relation_many" field
},
{
title: 'Neighborhood Watch',
// type code here for "relation_many" field
},
];
const MerchantsData = [
{
// type code here for "relation_one" field
profile_description: 'Expert plumber with 10 years experience.',
// type code here for "relation_many" field
},
{
// type code here for "relation_one" field
profile_description: 'Professional electrician for residential projects.',
// type code here for "relation_many" field
},
{
// type code here for "relation_one" field
profile_description: 'Certified HVAC technician.',
// type code here for "relation_many" field
},
{
// type code here for "relation_one" field
profile_description: 'Experienced painter and decorator.',
// type code here for "relation_many" field
},
];
const NotificationsData = [
{
message: 'Welcome to our platform!',
sent_at: new Date('2023-10-01T09:00:00Z'),
},
{
message: 'Your file status has been updated.',
sent_at: new Date('2023-10-02T10:00:00Z'),
},
{
message: 'New service request received.',
sent_at: new Date('2023-10-03T11:00:00Z'),
},
{
message: 'Forum post created in your neighborhood.',
sent_at: new Date('2023-10-04T12:00:00Z'),
},
];
const PostsData = [
{
// type code here for "relation_one" field
content: 'Join us for the annual block party!',
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
content: 'Looking for volunteers for the cleanup drive.',
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
content: 'Elevator maintenance scheduled for next week.',
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
content: 'Water supply will be interrupted on Friday.',
// type code here for "relation_one" field
},
];
const ResidentsData = [
{
// type code here for "relation_one" field
// type code here for "relation_many" field
// type code here for "relation_many" field
},
{
// type code here for "relation_one" field
// type code here for "relation_many" field
// type code here for "relation_many" field
},
{
// type code here for "relation_one" field
// type code here for "relation_many" field
// type code here for "relation_many" field
},
{
// type code here for "relation_one" field
// type code here for "relation_many" field
// type code here for "relation_many" field
},
];
const ServicesData = [
{
service_name: 'Plumbing',
// type code here for "relation_one" field
price: 50,
},
{
service_name: 'Electrical',
// type code here for "relation_one" field
price: 75,
},
{
service_name: 'HVAC',
// type code here for "relation_one" field
price: 100,
},
{
service_name: 'Painting',
// type code here for "relation_one" field
price: 60,
},
];
const SubscribersData = [
{
// type code here for "relation_one" field
file_status: 'Pending',
last_update: new Date('2023-10-01T10:00:00Z'),
// type code here for "relation_many" field
},
{
// type code here for "relation_one" field
file_status: 'Approved',
last_update: new Date('2023-10-02T11:00:00Z'),
// type code here for "relation_many" field
},
{
// type code here for "relation_one" field
file_status: 'Rejected',
last_update: new Date('2023-10-03T12:00:00Z'),
// type code here for "relation_many" field
},
{
// type code here for "relation_one" field
file_status: 'Pending',
last_update: new Date('2023-10-04T13:00:00Z'),
// type code here for "relation_many" field
},
];
// Similar logic for "relation_many"
// Similar logic for "relation_many"
async function associateMerchantWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Merchant0 = await Merchants.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Merchant0?.setUser) {
await Merchant0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Merchant1 = await Merchants.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Merchant1?.setUser) {
await Merchant1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Merchant2 = await Merchants.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Merchant2?.setUser) {
await Merchant2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Merchant3 = await Merchants.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Merchant3?.setUser) {
await Merchant3.setUser(relatedUser3);
}
}
// Similar logic for "relation_many"
async function associatePostWithForum() {
const relatedForum0 = await Forums.findOne({
offset: Math.floor(Math.random() * (await Forums.count())),
});
const Post0 = await Posts.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Post0?.setForum) {
await Post0.setForum(relatedForum0);
}
const relatedForum1 = await Forums.findOne({
offset: Math.floor(Math.random() * (await Forums.count())),
});
const Post1 = await Posts.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Post1?.setForum) {
await Post1.setForum(relatedForum1);
}
const relatedForum2 = await Forums.findOne({
offset: Math.floor(Math.random() * (await Forums.count())),
});
const Post2 = await Posts.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Post2?.setForum) {
await Post2.setForum(relatedForum2);
}
const relatedForum3 = await Forums.findOne({
offset: Math.floor(Math.random() * (await Forums.count())),
});
const Post3 = await Posts.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Post3?.setForum) {
await Post3.setForum(relatedForum3);
}
}
async function associatePostWithAuthor() {
const relatedAuthor0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Post0 = await Posts.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Post0?.setAuthor) {
await Post0.setAuthor(relatedAuthor0);
}
const relatedAuthor1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Post1 = await Posts.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Post1?.setAuthor) {
await Post1.setAuthor(relatedAuthor1);
}
const relatedAuthor2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Post2 = await Posts.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Post2?.setAuthor) {
await Post2.setAuthor(relatedAuthor2);
}
const relatedAuthor3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Post3 = await Posts.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Post3?.setAuthor) {
await Post3.setAuthor(relatedAuthor3);
}
}
async function associateResidentWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Resident0 = await Residents.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Resident0?.setUser) {
await Resident0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Resident1 = await Residents.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Resident1?.setUser) {
await Resident1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Resident2 = await Residents.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Resident2?.setUser) {
await Resident2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Resident3 = await Residents.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Resident3?.setUser) {
await Resident3.setUser(relatedUser3);
}
}
// Similar logic for "relation_many"
// Similar logic for "relation_many"
async function associateServiceWithMerchant() {
const relatedMerchant0 = await Merchants.findOne({
offset: Math.floor(Math.random() * (await Merchants.count())),
});
const Service0 = await Services.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Service0?.setMerchant) {
await Service0.setMerchant(relatedMerchant0);
}
const relatedMerchant1 = await Merchants.findOne({
offset: Math.floor(Math.random() * (await Merchants.count())),
});
const Service1 = await Services.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Service1?.setMerchant) {
await Service1.setMerchant(relatedMerchant1);
}
const relatedMerchant2 = await Merchants.findOne({
offset: Math.floor(Math.random() * (await Merchants.count())),
});
const Service2 = await Services.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Service2?.setMerchant) {
await Service2.setMerchant(relatedMerchant2);
}
const relatedMerchant3 = await Merchants.findOne({
offset: Math.floor(Math.random() * (await Merchants.count())),
});
const Service3 = await Services.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Service3?.setMerchant) {
await Service3.setMerchant(relatedMerchant3);
}
}
async function associateSubscriberWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Subscriber0 = await Subscribers.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Subscriber0?.setUser) {
await Subscriber0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Subscriber1 = await Subscribers.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Subscriber1?.setUser) {
await Subscriber1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Subscriber2 = await Subscribers.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Subscriber2?.setUser) {
await Subscriber2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Subscriber3 = await Subscribers.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Subscriber3?.setUser) {
await Subscriber3.setUser(relatedUser3);
}
}
// Similar logic for "relation_many"
module.exports = {
up: async (queryInterface, Sequelize) => {
await Forums.bulkCreate(ForumsData);
await Merchants.bulkCreate(MerchantsData);
await Notifications.bulkCreate(NotificationsData);
await Posts.bulkCreate(PostsData);
await Residents.bulkCreate(ResidentsData);
await Services.bulkCreate(ServicesData);
await Subscribers.bulkCreate(SubscribersData);
await Promise.all([
// Similar logic for "relation_many"
// Similar logic for "relation_many"
await associateMerchantWithUser(),
// Similar logic for "relation_many"
await associatePostWithForum(),
await associatePostWithAuthor(),
await associateResidentWithUser(),
// Similar logic for "relation_many"
// Similar logic for "relation_many"
await associateServiceWithMerchant(),
await associateSubscriberWithUser(),
// Similar logic for "relation_many"
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('forums', null, {});
await queryInterface.bulkDelete('merchants', null, {});
await queryInterface.bulkDelete('notifications', null, {});
await queryInterface.bulkDelete('posts', null, {});
await queryInterface.bulkDelete('residents', null, {});
await queryInterface.bulkDelete('services', null, {});
await queryInterface.bulkDelete('subscribers', null, {});
},
};