33191/backend/src/db/seeders/20231127130745-sample-data.js
2025-08-03 02:40:47 +00:00

465 lines
10 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Commissions = db.commissions;
const Investments = db.investments;
const Loans = db.loans;
const Meetings = db.meetings;
const Projects = db.projects;
const CommissionsData = [
{
// type code here for "relation_one" field
// type code here for "relation_one" field
amount: 200,
date_earned: new Date('2023-11-06T00:00:00Z'),
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
amount: 150,
date_earned: new Date('2023-11-11T00:00:00Z'),
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
amount: 100,
date_earned: new Date('2023-10-21T00:00:00Z'),
},
];
const InvestmentsData = [
{
// type code here for "relation_one" field
// type code here for "relation_one" field
amount: 5000,
status: 'failed',
investment_date: new Date('2023-11-05T00:00:00Z'),
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
amount: 10000,
status: 'failed',
investment_date: new Date('2023-11-10T00:00:00Z'),
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
amount: 7500,
status: 'failed',
investment_date: new Date('2023-10-20T00:00:00Z'),
},
];
const LoansData = [
{
// type code here for "relation_one" field
amount: 20000,
status: 'approved',
application_date: new Date('2023-11-01T00:00:00Z'),
due_date: new Date('2024-11-01T00:00:00Z'),
},
{
// type code here for "relation_one" field
amount: 15000,
status: 'approved',
application_date: new Date('2023-11-05T00:00:00Z'),
due_date: new Date('2024-11-05T00:00:00Z'),
},
{
// type code here for "relation_one" field
amount: 10000,
status: 'pending',
application_date: new Date('2023-11-10T00:00:00Z'),
due_date: new Date('2024-11-10T00:00:00Z'),
},
];
const MeetingsData = [
{
topic: 'Investment Strategies 2024',
scheduled_date: new Date('2023-12-05T00:00:00Z'),
// type code here for "relation_many" field
// type code here for "relation_one" field
},
{
topic: 'Debt Recovery Techniques',
scheduled_date: new Date('2023-12-10T00:00:00Z'),
// type code here for "relation_many" field
// type code here for "relation_one" field
},
{
topic: 'Community Engagement',
scheduled_date: new Date('2023-12-15T00:00:00Z'),
// type code here for "relation_many" field
// type code here for "relation_one" field
},
];
const ProjectsData = [
{
title: 'Green Energy Bonds',
annual_rate: 5.5,
remaining_quota: 100000,
status: 'in_progress',
start_date: new Date('2023-11-01T00:00:00Z'),
end_date: new Date('2024-11-01T00:00:00Z'),
// type code here for "relation_many" field
},
{
title: 'Tech Startup Equity',
annual_rate: 8,
remaining_quota: 50000,
status: 'closed',
start_date: new Date('2023-10-15T00:00:00Z'),
end_date: new Date('2024-10-15T00:00:00Z'),
// type code here for "relation_many" field
},
{
title: 'Real Estate Fund',
annual_rate: 6.5,
remaining_quota: 75000,
status: 'closed',
start_date: new Date('2023-09-01T00:00:00Z'),
end_date: new Date('2024-09-01T00:00:00Z'),
// type code here for "relation_many" field
},
];
// Similar logic for "relation_many"
async function associateCommissionWithReferrer() {
const relatedReferrer0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Commission0 = await Commissions.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Commission0?.setReferrer) {
await Commission0.setReferrer(relatedReferrer0);
}
const relatedReferrer1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Commission1 = await Commissions.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Commission1?.setReferrer) {
await Commission1.setReferrer(relatedReferrer1);
}
const relatedReferrer2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Commission2 = await Commissions.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Commission2?.setReferrer) {
await Commission2.setReferrer(relatedReferrer2);
}
}
async function associateCommissionWithReferred_user() {
const relatedReferred_user0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Commission0 = await Commissions.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Commission0?.setReferred_user) {
await Commission0.setReferred_user(relatedReferred_user0);
}
const relatedReferred_user1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Commission1 = await Commissions.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Commission1?.setReferred_user) {
await Commission1.setReferred_user(relatedReferred_user1);
}
const relatedReferred_user2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Commission2 = await Commissions.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Commission2?.setReferred_user) {
await Commission2.setReferred_user(relatedReferred_user2);
}
}
async function associateInvestmentWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Investment0 = await Investments.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Investment0?.setUser) {
await Investment0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Investment1 = await Investments.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Investment1?.setUser) {
await Investment1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Investment2 = await Investments.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Investment2?.setUser) {
await Investment2.setUser(relatedUser2);
}
}
async function associateInvestmentWithProject() {
const relatedProject0 = await Projects.findOne({
offset: Math.floor(Math.random() * (await Projects.count())),
});
const Investment0 = await Investments.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Investment0?.setProject) {
await Investment0.setProject(relatedProject0);
}
const relatedProject1 = await Projects.findOne({
offset: Math.floor(Math.random() * (await Projects.count())),
});
const Investment1 = await Investments.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Investment1?.setProject) {
await Investment1.setProject(relatedProject1);
}
const relatedProject2 = await Projects.findOne({
offset: Math.floor(Math.random() * (await Projects.count())),
});
const Investment2 = await Investments.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Investment2?.setProject) {
await Investment2.setProject(relatedProject2);
}
}
async function associateLoanWithBorrower() {
const relatedBorrower0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Loan0 = await Loans.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Loan0?.setBorrower) {
await Loan0.setBorrower(relatedBorrower0);
}
const relatedBorrower1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Loan1 = await Loans.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Loan1?.setBorrower) {
await Loan1.setBorrower(relatedBorrower1);
}
const relatedBorrower2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Loan2 = await Loans.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Loan2?.setBorrower) {
await Loan2.setBorrower(relatedBorrower2);
}
}
// Similar logic for "relation_many"
async function associateMeetingWithHost() {
const relatedHost0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Meeting0 = await Meetings.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Meeting0?.setHost) {
await Meeting0.setHost(relatedHost0);
}
const relatedHost1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Meeting1 = await Meetings.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Meeting1?.setHost) {
await Meeting1.setHost(relatedHost1);
}
const relatedHost2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Meeting2 = await Meetings.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Meeting2?.setHost) {
await Meeting2.setHost(relatedHost2);
}
}
// Similar logic for "relation_many"
module.exports = {
up: async (queryInterface, Sequelize) => {
await Commissions.bulkCreate(CommissionsData);
await Investments.bulkCreate(InvestmentsData);
await Loans.bulkCreate(LoansData);
await Meetings.bulkCreate(MeetingsData);
await Projects.bulkCreate(ProjectsData);
await Promise.all([
// Similar logic for "relation_many"
await associateCommissionWithReferrer(),
await associateCommissionWithReferred_user(),
await associateInvestmentWithUser(),
await associateInvestmentWithProject(),
await associateLoanWithBorrower(),
// Similar logic for "relation_many"
await associateMeetingWithHost(),
// Similar logic for "relation_many"
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('commissions', null, {});
await queryInterface.bulkDelete('investments', null, {});
await queryInterface.bulkDelete('loans', null, {});
await queryInterface.bulkDelete('meetings', null, {});
await queryInterface.bulkDelete('projects', null, {});
},
};