34138/backend/src/db/seeders/20231127130745-sample-data.js
2025-09-17 10:14:26 +00:00

313 lines
6.5 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Contacts = db.contacts;
const Lifegroups = db.lifegroups;
const ContactsData = [
{
full_name: 'John Doe',
gender: 'Male',
age: 30,
contact_information: '123-456-7890',
location: 'Downtown',
decision_for_christ: 'Yes',
other_church_affiliation: true,
notes_prayer_needs: 'Pray for job stability',
status: 'Baptized',
// type code here for "relation_one" field
},
{
full_name: 'Jane Smith',
gender: 'Male',
age: 25,
contact_information: '987-654-3210',
location: 'Uptown',
decision_for_christ: 'No',
other_church_affiliation: true,
notes_prayer_needs: 'Health issues',
status: 'Baptized',
// type code here for "relation_one" field
},
{
full_name: 'Michael Johnson',
gender: 'Female',
age: 40,
contact_information: '555-123-4567',
location: 'Suburb',
decision_for_christ: 'No',
other_church_affiliation: true,
notes_prayer_needs: 'Family reconciliation',
status: 'Evangelized',
// type code here for "relation_one" field
},
{
full_name: 'Emily Davis',
gender: 'Other',
age: 35,
contact_information: '444-555-6666',
location: 'City Center',
decision_for_christ: 'Yes',
other_church_affiliation: true,
notes_prayer_needs: 'Guidance in faith',
status: 'InLifegroup',
// type code here for "relation_one" field
},
{
full_name: 'Chris Brown',
gender: 'Other',
age: 28,
contact_information: '333-222-1111',
location: 'Old Town',
decision_for_christ: 'Undecided',
other_church_affiliation: true,
notes_prayer_needs: 'Career direction',
status: 'BeingDiscipled',
// type code here for "relation_one" field
},
];
const LifegroupsData = [
{
name: 'Downtown Disciples',
// type code here for "relation_many" field
// type code here for "relation_one" field
},
{
name: 'Uptown Believers',
// type code here for "relation_many" field
// type code here for "relation_one" field
},
{
name: 'Suburb Saints',
// type code here for "relation_many" field
// type code here for "relation_one" field
},
{
name: 'City Center Seekers',
// type code here for "relation_many" field
// type code here for "relation_one" field
},
{
name: 'Old Town Outreach',
// type code here for "relation_many" field
// type code here for "relation_one" field
},
];
// Similar logic for "relation_many"
async function associateContactWithAssigned_follow_up_leader() {
const relatedAssigned_follow_up_leader0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Contact0 = await Contacts.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Contact0?.setAssigned_follow_up_leader) {
await Contact0.setAssigned_follow_up_leader(
relatedAssigned_follow_up_leader0,
);
}
const relatedAssigned_follow_up_leader1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Contact1 = await Contacts.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Contact1?.setAssigned_follow_up_leader) {
await Contact1.setAssigned_follow_up_leader(
relatedAssigned_follow_up_leader1,
);
}
const relatedAssigned_follow_up_leader2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Contact2 = await Contacts.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Contact2?.setAssigned_follow_up_leader) {
await Contact2.setAssigned_follow_up_leader(
relatedAssigned_follow_up_leader2,
);
}
const relatedAssigned_follow_up_leader3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Contact3 = await Contacts.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Contact3?.setAssigned_follow_up_leader) {
await Contact3.setAssigned_follow_up_leader(
relatedAssigned_follow_up_leader3,
);
}
const relatedAssigned_follow_up_leader4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Contact4 = await Contacts.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Contact4?.setAssigned_follow_up_leader) {
await Contact4.setAssigned_follow_up_leader(
relatedAssigned_follow_up_leader4,
);
}
}
// Similar logic for "relation_many"
async function associateLifegroupWithLeader() {
const relatedLeader0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Lifegroup0 = await Lifegroups.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Lifegroup0?.setLeader) {
await Lifegroup0.setLeader(relatedLeader0);
}
const relatedLeader1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Lifegroup1 = await Lifegroups.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Lifegroup1?.setLeader) {
await Lifegroup1.setLeader(relatedLeader1);
}
const relatedLeader2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Lifegroup2 = await Lifegroups.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Lifegroup2?.setLeader) {
await Lifegroup2.setLeader(relatedLeader2);
}
const relatedLeader3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Lifegroup3 = await Lifegroups.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Lifegroup3?.setLeader) {
await Lifegroup3.setLeader(relatedLeader3);
}
const relatedLeader4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Lifegroup4 = await Lifegroups.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Lifegroup4?.setLeader) {
await Lifegroup4.setLeader(relatedLeader4);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await Contacts.bulkCreate(ContactsData);
await Lifegroups.bulkCreate(LifegroupsData);
await Promise.all([
// Similar logic for "relation_many"
await associateContactWithAssigned_follow_up_leader(),
// Similar logic for "relation_many"
await associateLifegroupWithLeader(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('contacts', null, {});
await queryInterface.bulkDelete('lifegroups', null, {});
},
};