32095/backend/src/db/seeders/20231127130745-sample-data.js
2025-06-08 11:27:28 +00:00

249 lines
5.3 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Billers = db.billers;
const Transactions = db.transactions;
const BillersData = [
{
name: 'Acme Corp',
contact_email: 'contact@acmecorp.com',
phone_number: '123-456-7890',
},
{
name: 'Globex Inc',
contact_email: 'info@globex.com',
phone_number: '234-567-8901',
},
{
name: 'Initech',
contact_email: 'support@initech.com',
phone_number: '345-678-9012',
},
{
name: 'Umbrella Corp',
contact_email: 'sales@umbrella.com',
phone_number: '456-789-0123',
},
{
name: 'Hooli',
contact_email: 'hello@hooli.com',
phone_number: '567-890-1234',
},
];
const TransactionsData = [
{
transaction_id: 'TXN001',
amount: 1500.75,
transaction_date: new Date('2023-10-01T10:00:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
transaction_id: 'TXN002',
amount: 250,
transaction_date: new Date('2023-10-02T11:30:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
transaction_id: 'TXN003',
amount: 500.5,
transaction_date: new Date('2023-10-03T14:45:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
transaction_id: 'TXN004',
amount: 750,
transaction_date: new Date('2023-10-04T09:15:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
transaction_id: 'TXN005',
amount: 1200,
transaction_date: new Date('2023-10-05T16:00:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
},
];
// Similar logic for "relation_many"
async function associateTransactionWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Transaction0 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Transaction0?.setUser) {
await Transaction0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Transaction1 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Transaction1?.setUser) {
await Transaction1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Transaction2 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Transaction2?.setUser) {
await Transaction2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Transaction3 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Transaction3?.setUser) {
await Transaction3.setUser(relatedUser3);
}
const relatedUser4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Transaction4 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Transaction4?.setUser) {
await Transaction4.setUser(relatedUser4);
}
}
async function associateTransactionWithBiller() {
const relatedBiller0 = await Billers.findOne({
offset: Math.floor(Math.random() * (await Billers.count())),
});
const Transaction0 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Transaction0?.setBiller) {
await Transaction0.setBiller(relatedBiller0);
}
const relatedBiller1 = await Billers.findOne({
offset: Math.floor(Math.random() * (await Billers.count())),
});
const Transaction1 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Transaction1?.setBiller) {
await Transaction1.setBiller(relatedBiller1);
}
const relatedBiller2 = await Billers.findOne({
offset: Math.floor(Math.random() * (await Billers.count())),
});
const Transaction2 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Transaction2?.setBiller) {
await Transaction2.setBiller(relatedBiller2);
}
const relatedBiller3 = await Billers.findOne({
offset: Math.floor(Math.random() * (await Billers.count())),
});
const Transaction3 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Transaction3?.setBiller) {
await Transaction3.setBiller(relatedBiller3);
}
const relatedBiller4 = await Billers.findOne({
offset: Math.floor(Math.random() * (await Billers.count())),
});
const Transaction4 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Transaction4?.setBiller) {
await Transaction4.setBiller(relatedBiller4);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await Billers.bulkCreate(BillersData);
await Transactions.bulkCreate(TransactionsData);
await Promise.all([
// Similar logic for "relation_many"
await associateTransactionWithUser(),
await associateTransactionWithBiller(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('billers', null, {});
await queryInterface.bulkDelete('transactions', null, {});
},
};