33174/backend/src/db/seeders/20231127130745-sample-data.js
2025-08-02 04:44:07 +00:00

1191 lines
25 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Admins = db.admins;
const Announcements = db.announcements;
const Appointments = db.appointments;
const Comments = db.comments;
const Discussions = db.discussions;
const Events = db.events;
const Medications = db.medications;
const Profiles = db.profiles;
const Records = db.records;
const Registrations = db.registrations;
const WellnessCheckIns = db.wellness_check_ins;
const AdminsData = [
{
admin_username: 'superuser1',
password: 'superPass123',
super_access: 'TRUE',
admin_role: 'System Manager',
},
{
admin_username: 'moderator1',
password: 'modPass456',
super_access: 'FALSE',
admin_role: 'Content Moderator',
},
{
admin_username: 'editor1',
password: 'editPass789',
super_access: 'TRUE',
admin_role: 'Content Editor',
},
{
admin_username: 'support1',
password: 'supportPass321',
super_access: 'FALSE',
admin_role: 'Support Specialist',
},
];
const AnnouncementsData = [
{
title: 'System Update',
content: 'The system will be updated on 2023-11-15.',
created_date: new Date('2023-10-01'),
// type code here for "relation_one" field
},
{
title: 'New Features',
content: 'Check out the new features added this month.',
created_date: new Date('2023-10-05'),
// type code here for "relation_one" field
},
{
title: 'Maintenance Notice',
content: 'Scheduled maintenance on 2023-11-20.',
created_date: new Date('2023-10-10'),
// type code here for "relation_one" field
},
{
title: 'Event Reminder',
content: "Don't forget to register for upcoming events.",
created_date: new Date('2023-10-15'),
// type code here for "relation_one" field
},
];
const AppointmentsData = [
{
appointment_type: 'Therapy',
appointment_date: new Date('2023-11-25'),
description: 'Annual check-up',
// type code here for "relation_one" field
},
{
appointment_type: 'HealthScreening',
appointment_date: new Date('2023-12-01'),
description: 'Knee therapy session',
// type code here for "relation_one" field
},
{
appointment_type: 'HealthScreening',
appointment_date: new Date('2023-12-10'),
description: 'Mental health counseling',
// type code here for "relation_one" field
},
{
appointment_type: 'Therapy',
appointment_date: new Date('2023-12-15'),
description: 'Follow-up screening',
// type code here for "relation_one" field
},
];
const CommentsData = [
{
// type code here for "relation_one" field
// type code here for "relation_one" field
comment_text: 'Meditation helps reduce stress.',
comment_date: new Date('2023-10-06'),
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
comment_text: 'Exercise is also beneficial.',
comment_date: new Date('2023-10-07'),
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
comment_text: 'Include more vegetables in your diet.',
comment_date: new Date('2023-10-08'),
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
comment_text: 'Consistency is key to fitness.',
comment_date: new Date('2023-10-09'),
},
];
const DiscussionsData = [
{
topic: 'Managing Stress',
created_date: new Date('2023-10-01'),
// type code here for "relation_one" field
},
{
topic: 'Healthy Eating Tips',
created_date: new Date('2023-10-02'),
// type code here for "relation_one" field
},
{
topic: 'Exercise Routines',
created_date: new Date('2023-10-03'),
// type code here for "relation_one" field
},
{
topic: 'Mental Health Awareness',
created_date: new Date('2023-10-04'),
// type code here for "relation_one" field
},
];
const EventsData = [
{
event_title: 'Wellness Workshop',
event_desc: 'A workshop on mental health',
event_date: new Date('2023-11-10'),
event_location: 'Community Center',
event_duration: '02:00:00',
event_spots: 30,
},
{
event_title: 'Yoga Class',
event_desc: 'Beginner yoga session',
event_date: new Date('2023-11-15'),
event_location: 'Local Gym',
event_duration: '01:30:00',
event_spots: 20,
},
{
event_title: 'Nutrition Seminar',
event_desc: 'Healthy eating tips',
event_date: new Date('2023-11-20'),
event_location: 'Health Clinic',
event_duration: '01:00:00',
event_spots: 25,
},
{
event_title: 'Fitness Bootcamp',
event_desc: 'Outdoor fitness activities',
event_date: new Date('2023-11-25'),
event_location: 'City Park',
event_duration: '03:00:00',
event_spots: 50,
},
];
const MedicationsData = [
{
medication_name: 'Paracetamol',
dosage: '500mg',
frequency: 'Twice daily',
start_date: new Date('2023-10-01'),
end_date: new Date('2023-10-10'),
reminder_time: '08:00:00',
// type code here for "relation_one" field
},
{
medication_name: 'Ibuprofen',
dosage: '200mg',
frequency: 'Once daily',
start_date: new Date('2023-10-05'),
end_date: new Date('2023-10-15'),
reminder_time: '09:00:00',
// type code here for "relation_one" field
},
{
medication_name: 'Vitamin D',
dosage: '1000 IU',
frequency: 'Once daily',
start_date: new Date('2023-10-10'),
end_date: new Date('2023-11-10'),
reminder_time: '10:00:00',
// type code here for "relation_one" field
},
{
medication_name: 'Aspirin',
dosage: '81mg',
frequency: 'Once daily',
start_date: new Date('2023-10-15'),
end_date: new Date('2023-11-15'),
reminder_time: '11:00:00',
// type code here for "relation_one" field
},
];
const ProfilesData = [
{
full_name: 'John Doe',
nick_name: 'Johnny',
gender: 'Male',
language: 'English',
birth_date: new Date('1990-05-15'),
phone_number: '1234567890',
// type code here for "relation_one" field
},
{
full_name: 'Jane Smith',
nick_name: 'Janey',
gender: 'Female',
language: 'Spanish',
birth_date: new Date('1985-08-22'),
phone_number: '0987654321',
// type code here for "relation_one" field
},
{
full_name: 'Michael Brown',
nick_name: 'Mike',
gender: 'Male',
language: 'French',
birth_date: new Date('1978-11-30'),
phone_number: '1122334455',
// type code here for "relation_one" field
},
{
full_name: 'Emily Jones',
nick_name: 'Em',
gender: 'Female',
language: 'German',
birth_date: new Date('1992-03-10'),
phone_number: '2233445566',
// type code here for "relation_one" field
},
];
const RecordsData = [
{
doctor_name: 'Dr. Smith',
type: 'Health Screening',
assessment: 'Normal',
diagnosis: 'Healthy',
prescription: 'Vitamin C',
record_date: new Date('2023-10-01'),
// type code here for "relation_one" field
},
{
doctor_name: 'Dr. Johnson',
type: 'Rehabilitation',
assessment: 'Improved mobility',
diagnosis: 'Recovery',
prescription: 'Physical therapy',
record_date: new Date('2023-09-15'),
// type code here for "relation_one" field
},
{
doctor_name: 'Dr. Lee',
type: 'Therapy',
assessment: 'Reduced anxiety',
diagnosis: 'Stable',
prescription: 'Counseling',
record_date: new Date('2023-08-20'),
// type code here for "relation_one" field
},
{
doctor_name: 'Dr. Kim',
type: 'Health Screening',
assessment: 'High cholesterol',
diagnosis: 'Hyperlipidemia',
prescription: 'Dietary changes',
record_date: new Date('2023-07-10'),
// type code here for "relation_one" field
},
];
const RegistrationsData = [
{
full_name: 'John Doe',
email_address: 'john.doe@example.com',
phone_number: '1234567890',
registration_date: new Date('2023-10-01'),
special_req: 'None',
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
full_name: 'Jane Smith',
email_address: 'jane.smith@example.com',
phone_number: '0987654321',
registration_date: new Date('2023-10-02'),
special_req: 'Vegan meal',
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
full_name: 'Michael Brown',
email_address: 'michael.brown@example.com',
phone_number: '1122334455',
registration_date: new Date('2023-10-03'),
special_req: 'Wheelchair access',
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
full_name: 'Emily Jones',
email_address: 'emily.jones@example.com',
phone_number: '2233445566',
registration_date: new Date('2023-10-04'),
special_req: 'Sign language interpreter',
// type code here for "relation_one" field
// type code here for "relation_one" field
},
];
const WellnessCheckInsData = [
{
check_in_date: new Date('2023-10-01'),
mood: 'Happy',
energy_level: 8,
sleep_hours: 7.5,
notes: 'Feeling great today.',
// type code here for "relation_one" field
},
{
check_in_date: new Date('2023-10-02'),
mood: 'Tired',
energy_level: 5,
sleep_hours: 6,
notes: 'Need more rest.',
// type code here for "relation_one" field
},
{
check_in_date: new Date('2023-10-03'),
mood: 'Anxious',
energy_level: 4,
sleep_hours: 5.5,
notes: 'Work stress.',
// type code here for "relation_one" field
},
{
check_in_date: new Date('2023-10-04'),
mood: 'Relaxed',
energy_level: 7,
sleep_hours: 8,
notes: 'Good day overall.',
// type code here for "relation_one" field
},
];
// Similar logic for "relation_many"
async function associateAnnouncementWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Announcement0 = await Announcements.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Announcement0?.setUser) {
await Announcement0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Announcement1 = await Announcements.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Announcement1?.setUser) {
await Announcement1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Announcement2 = await Announcements.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Announcement2?.setUser) {
await Announcement2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Announcement3 = await Announcements.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Announcement3?.setUser) {
await Announcement3.setUser(relatedUser3);
}
}
async function associateAppointmentWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Appointment0 = await Appointments.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Appointment0?.setUser) {
await Appointment0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Appointment1 = await Appointments.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Appointment1?.setUser) {
await Appointment1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Appointment2 = await Appointments.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Appointment2?.setUser) {
await Appointment2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Appointment3 = await Appointments.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Appointment3?.setUser) {
await Appointment3.setUser(relatedUser3);
}
}
async function associateCommentWithDiscussion() {
const relatedDiscussion0 = await Discussions.findOne({
offset: Math.floor(Math.random() * (await Discussions.count())),
});
const Comment0 = await Comments.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Comment0?.setDiscussion) {
await Comment0.setDiscussion(relatedDiscussion0);
}
const relatedDiscussion1 = await Discussions.findOne({
offset: Math.floor(Math.random() * (await Discussions.count())),
});
const Comment1 = await Comments.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Comment1?.setDiscussion) {
await Comment1.setDiscussion(relatedDiscussion1);
}
const relatedDiscussion2 = await Discussions.findOne({
offset: Math.floor(Math.random() * (await Discussions.count())),
});
const Comment2 = await Comments.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Comment2?.setDiscussion) {
await Comment2.setDiscussion(relatedDiscussion2);
}
const relatedDiscussion3 = await Discussions.findOne({
offset: Math.floor(Math.random() * (await Discussions.count())),
});
const Comment3 = await Comments.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Comment3?.setDiscussion) {
await Comment3.setDiscussion(relatedDiscussion3);
}
}
async function associateCommentWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Comment0 = await Comments.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Comment0?.setUser) {
await Comment0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Comment1 = await Comments.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Comment1?.setUser) {
await Comment1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Comment2 = await Comments.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Comment2?.setUser) {
await Comment2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Comment3 = await Comments.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Comment3?.setUser) {
await Comment3.setUser(relatedUser3);
}
}
async function associateDiscussionWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Discussion0 = await Discussions.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Discussion0?.setUser) {
await Discussion0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Discussion1 = await Discussions.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Discussion1?.setUser) {
await Discussion1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Discussion2 = await Discussions.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Discussion2?.setUser) {
await Discussion2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Discussion3 = await Discussions.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Discussion3?.setUser) {
await Discussion3.setUser(relatedUser3);
}
}
async function associateMedicationWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Medication0 = await Medications.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Medication0?.setUser) {
await Medication0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Medication1 = await Medications.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Medication1?.setUser) {
await Medication1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Medication2 = await Medications.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Medication2?.setUser) {
await Medication2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Medication3 = await Medications.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Medication3?.setUser) {
await Medication3.setUser(relatedUser3);
}
}
async function associateProfileWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Profile0 = await Profiles.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Profile0?.setUser) {
await Profile0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Profile1 = await Profiles.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Profile1?.setUser) {
await Profile1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Profile2 = await Profiles.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Profile2?.setUser) {
await Profile2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Profile3 = await Profiles.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Profile3?.setUser) {
await Profile3.setUser(relatedUser3);
}
}
async function associateRecordWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Record0 = await Records.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Record0?.setUser) {
await Record0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Record1 = await Records.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Record1?.setUser) {
await Record1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Record2 = await Records.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Record2?.setUser) {
await Record2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Record3 = await Records.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Record3?.setUser) {
await Record3.setUser(relatedUser3);
}
}
async function associateRegistrationWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Registration0 = await Registrations.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Registration0?.setUser) {
await Registration0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Registration1 = await Registrations.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Registration1?.setUser) {
await Registration1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Registration2 = await Registrations.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Registration2?.setUser) {
await Registration2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Registration3 = await Registrations.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Registration3?.setUser) {
await Registration3.setUser(relatedUser3);
}
}
async function associateRegistrationWithEvent() {
const relatedEvent0 = await Events.findOne({
offset: Math.floor(Math.random() * (await Events.count())),
});
const Registration0 = await Registrations.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Registration0?.setEvent) {
await Registration0.setEvent(relatedEvent0);
}
const relatedEvent1 = await Events.findOne({
offset: Math.floor(Math.random() * (await Events.count())),
});
const Registration1 = await Registrations.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Registration1?.setEvent) {
await Registration1.setEvent(relatedEvent1);
}
const relatedEvent2 = await Events.findOne({
offset: Math.floor(Math.random() * (await Events.count())),
});
const Registration2 = await Registrations.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Registration2?.setEvent) {
await Registration2.setEvent(relatedEvent2);
}
const relatedEvent3 = await Events.findOne({
offset: Math.floor(Math.random() * (await Events.count())),
});
const Registration3 = await Registrations.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Registration3?.setEvent) {
await Registration3.setEvent(relatedEvent3);
}
}
async function associateWellnessCheckInWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const WellnessCheckIn0 = await WellnessCheckIns.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (WellnessCheckIn0?.setUser) {
await WellnessCheckIn0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const WellnessCheckIn1 = await WellnessCheckIns.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (WellnessCheckIn1?.setUser) {
await WellnessCheckIn1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const WellnessCheckIn2 = await WellnessCheckIns.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (WellnessCheckIn2?.setUser) {
await WellnessCheckIn2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const WellnessCheckIn3 = await WellnessCheckIns.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (WellnessCheckIn3?.setUser) {
await WellnessCheckIn3.setUser(relatedUser3);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await Admins.bulkCreate(AdminsData);
await Announcements.bulkCreate(AnnouncementsData);
await Appointments.bulkCreate(AppointmentsData);
await Comments.bulkCreate(CommentsData);
await Discussions.bulkCreate(DiscussionsData);
await Events.bulkCreate(EventsData);
await Medications.bulkCreate(MedicationsData);
await Profiles.bulkCreate(ProfilesData);
await Records.bulkCreate(RecordsData);
await Registrations.bulkCreate(RegistrationsData);
await WellnessCheckIns.bulkCreate(WellnessCheckInsData);
await Promise.all([
// Similar logic for "relation_many"
await associateAnnouncementWithUser(),
await associateAppointmentWithUser(),
await associateCommentWithDiscussion(),
await associateCommentWithUser(),
await associateDiscussionWithUser(),
await associateMedicationWithUser(),
await associateProfileWithUser(),
await associateRecordWithUser(),
await associateRegistrationWithUser(),
await associateRegistrationWithEvent(),
await associateWellnessCheckInWithUser(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('admins', null, {});
await queryInterface.bulkDelete('announcements', null, {});
await queryInterface.bulkDelete('appointments', null, {});
await queryInterface.bulkDelete('comments', null, {});
await queryInterface.bulkDelete('discussions', null, {});
await queryInterface.bulkDelete('events', null, {});
await queryInterface.bulkDelete('medications', null, {});
await queryInterface.bulkDelete('profiles', null, {});
await queryInterface.bulkDelete('records', null, {});
await queryInterface.bulkDelete('registrations', null, {});
await queryInterface.bulkDelete('wellness_check_ins', null, {});
},
};