32824/backend/src/db/seeders/20231127130745-sample-data.js
2025-07-15 08:26:19 +00:00

363 lines
7.6 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Categories = db.categories;
const Events = db.events;
const Maps = db.maps;
const Notifications = db.notifications;
const CategoriesData = [
{
name: 'Politics',
description: 'Events related to political activities and discussions.',
},
{
name: 'Protests',
description: 'Events related to public demonstrations and protests.',
},
{
name: 'Community',
description: 'Events related to community gatherings and meetings.',
},
{
name: 'Environment',
description: 'Events related to environmental awareness and actions.',
},
{
name: 'Healthcare',
description: 'Events related to healthcare policies and forums.',
},
];
const EventsData = [
{
title: 'State Election Debate',
description: 'A debate between candidates for the upcoming state election.',
start_date: new Date('2023-11-01T18:00:00Z'),
end_date: new Date('2023-11-01T20:00:00Z'),
status: 'unverified',
// type code here for "relation_many" field
},
{
title: 'County Fair Protest',
description: 'Protest against the new county fair regulations.',
start_date: new Date('2023-11-05T10:00:00Z'),
end_date: new Date('2023-11-05T12:00:00Z'),
status: 'unverified',
// type code here for "relation_many" field
},
{
title: 'City Council Meeting',
description: 'Discussion on the new city development plan.',
start_date: new Date('2023-11-10T15:00:00Z'),
end_date: new Date('2023-11-10T17:00:00Z'),
status: 'unverified',
// type code here for "relation_many" field
},
{
title: 'Environmental Awareness Rally',
description: 'Rally to promote environmental awareness in the community.',
start_date: new Date('2023-11-15T09:00:00Z'),
end_date: new Date('2023-11-15T11:00:00Z'),
status: 'verified',
// type code here for "relation_many" field
},
{
title: 'Healthcare Policy Forum',
description: 'Forum to discuss the new healthcare policies.',
start_date: new Date('2023-11-20T14:00:00Z'),
end_date: new Date('2023-11-20T16:00:00Z'),
status: 'verified',
// type code here for "relation_many" field
},
];
const MapsData = [
{
state: 'California',
county: 'Los Angeles',
// type code here for "relation_many" field
},
{
state: 'Texas',
county: 'Travis',
// type code here for "relation_many" field
},
{
state: 'New York',
county: 'Kings',
// type code here for "relation_many" field
},
{
state: 'Florida',
county: 'Miami-Dade',
// type code here for "relation_many" field
},
{
state: 'Illinois',
county: 'Cook',
// type code here for "relation_many" field
},
];
const NotificationsData = [
{
message: 'New event: State Election Debate',
// type code here for "relation_one" field
// type code here for "relation_one" field
read: true,
},
{
message: 'New event: County Fair Protest',
// type code here for "relation_one" field
// type code here for "relation_one" field
read: false,
},
{
message: 'New event: City Council Meeting',
// type code here for "relation_one" field
// type code here for "relation_one" field
read: true,
},
{
message: 'New event: Environmental Awareness Rally',
// type code here for "relation_one" field
// type code here for "relation_one" field
read: true,
},
{
message: 'New event: Healthcare Policy Forum',
// type code here for "relation_one" field
// type code here for "relation_one" field
read: true,
},
];
// Similar logic for "relation_many"
// Similar logic for "relation_many"
// Similar logic for "relation_many"
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 associateNotificationWithEvent() {
const relatedEvent0 = await Events.findOne({
offset: Math.floor(Math.random() * (await Events.count())),
});
const Notification0 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Notification0?.setEvent) {
await Notification0.setEvent(relatedEvent0);
}
const relatedEvent1 = await Events.findOne({
offset: Math.floor(Math.random() * (await Events.count())),
});
const Notification1 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Notification1?.setEvent) {
await Notification1.setEvent(relatedEvent1);
}
const relatedEvent2 = await Events.findOne({
offset: Math.floor(Math.random() * (await Events.count())),
});
const Notification2 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Notification2?.setEvent) {
await Notification2.setEvent(relatedEvent2);
}
const relatedEvent3 = await Events.findOne({
offset: Math.floor(Math.random() * (await Events.count())),
});
const Notification3 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Notification3?.setEvent) {
await Notification3.setEvent(relatedEvent3);
}
const relatedEvent4 = await Events.findOne({
offset: Math.floor(Math.random() * (await Events.count())),
});
const Notification4 = await Notifications.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Notification4?.setEvent) {
await Notification4.setEvent(relatedEvent4);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await Categories.bulkCreate(CategoriesData);
await Events.bulkCreate(EventsData);
await Maps.bulkCreate(MapsData);
await Notifications.bulkCreate(NotificationsData);
await Promise.all([
// Similar logic for "relation_many"
// Similar logic for "relation_many"
// Similar logic for "relation_many"
await associateNotificationWithUser(),
await associateNotificationWithEvent(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('categories', null, {});
await queryInterface.bulkDelete('events', null, {});
await queryInterface.bulkDelete('maps', null, {});
await queryInterface.bulkDelete('notifications', null, {});
},
};