253 lines
5.5 KiB
JavaScript
253 lines
5.5 KiB
JavaScript
const db = require('../models');
|
|
const Users = db.users;
|
|
|
|
const Departments = db.departments;
|
|
|
|
const Employees = db.employees;
|
|
|
|
const DepartmentsData = [
|
|
{
|
|
name: 'Sales',
|
|
|
|
// type code here for "relation_one" field
|
|
|
|
// type code here for "relation_many" field
|
|
},
|
|
|
|
{
|
|
name: 'Marketing',
|
|
|
|
// type code here for "relation_one" field
|
|
|
|
// type code here for "relation_many" field
|
|
},
|
|
|
|
{
|
|
name: 'IT',
|
|
|
|
// type code here for "relation_one" field
|
|
|
|
// type code here for "relation_many" field
|
|
},
|
|
|
|
{
|
|
name: 'HR',
|
|
|
|
// type code here for "relation_one" field
|
|
|
|
// type code here for "relation_many" field
|
|
},
|
|
|
|
{
|
|
name: 'Finance',
|
|
|
|
// type code here for "relation_one" field
|
|
|
|
// type code here for "relation_many" field
|
|
},
|
|
];
|
|
|
|
const EmployeesData = [
|
|
{
|
|
first_name: 'John',
|
|
|
|
last_name: 'Doe',
|
|
|
|
email: 'john.doe@example.com',
|
|
|
|
hire_date: new Date('2023-01-15'),
|
|
|
|
// type code here for "relation_one" field
|
|
},
|
|
|
|
{
|
|
first_name: 'Jane',
|
|
|
|
last_name: 'Roe',
|
|
|
|
email: 'jane.roe@example.com',
|
|
|
|
hire_date: new Date('2022-11-20'),
|
|
|
|
// type code here for "relation_one" field
|
|
},
|
|
|
|
{
|
|
first_name: 'Jim',
|
|
|
|
last_name: 'Beam',
|
|
|
|
email: 'jim.beam@example.com',
|
|
|
|
hire_date: new Date('2023-03-10'),
|
|
|
|
// type code here for "relation_one" field
|
|
},
|
|
|
|
{
|
|
first_name: 'Jill',
|
|
|
|
last_name: 'Valentine',
|
|
|
|
email: 'jill.valentine@example.com',
|
|
|
|
hire_date: new Date('2023-05-05'),
|
|
|
|
// type code here for "relation_one" field
|
|
},
|
|
|
|
{
|
|
first_name: 'Jack',
|
|
|
|
last_name: 'Sparrow',
|
|
|
|
email: 'jack.sparrow@example.com',
|
|
|
|
hire_date: new Date('2023-07-25'),
|
|
|
|
// type code here for "relation_one" field
|
|
},
|
|
];
|
|
|
|
// Similar logic for "relation_many"
|
|
|
|
async function associateDepartmentWithLeader() {
|
|
const relatedLeader0 = await Users.findOne({
|
|
offset: Math.floor(Math.random() * (await Users.count())),
|
|
});
|
|
const Department0 = await Departments.findOne({
|
|
order: [['id', 'ASC']],
|
|
offset: 0,
|
|
});
|
|
if (Department0?.setLeader) {
|
|
await Department0.setLeader(relatedLeader0);
|
|
}
|
|
|
|
const relatedLeader1 = await Users.findOne({
|
|
offset: Math.floor(Math.random() * (await Users.count())),
|
|
});
|
|
const Department1 = await Departments.findOne({
|
|
order: [['id', 'ASC']],
|
|
offset: 1,
|
|
});
|
|
if (Department1?.setLeader) {
|
|
await Department1.setLeader(relatedLeader1);
|
|
}
|
|
|
|
const relatedLeader2 = await Users.findOne({
|
|
offset: Math.floor(Math.random() * (await Users.count())),
|
|
});
|
|
const Department2 = await Departments.findOne({
|
|
order: [['id', 'ASC']],
|
|
offset: 2,
|
|
});
|
|
if (Department2?.setLeader) {
|
|
await Department2.setLeader(relatedLeader2);
|
|
}
|
|
|
|
const relatedLeader3 = await Users.findOne({
|
|
offset: Math.floor(Math.random() * (await Users.count())),
|
|
});
|
|
const Department3 = await Departments.findOne({
|
|
order: [['id', 'ASC']],
|
|
offset: 3,
|
|
});
|
|
if (Department3?.setLeader) {
|
|
await Department3.setLeader(relatedLeader3);
|
|
}
|
|
|
|
const relatedLeader4 = await Users.findOne({
|
|
offset: Math.floor(Math.random() * (await Users.count())),
|
|
});
|
|
const Department4 = await Departments.findOne({
|
|
order: [['id', 'ASC']],
|
|
offset: 4,
|
|
});
|
|
if (Department4?.setLeader) {
|
|
await Department4.setLeader(relatedLeader4);
|
|
}
|
|
}
|
|
|
|
// Similar logic for "relation_many"
|
|
|
|
async function associateEmployeeWithDepartment() {
|
|
const relatedDepartment0 = await Departments.findOne({
|
|
offset: Math.floor(Math.random() * (await Departments.count())),
|
|
});
|
|
const Employee0 = await Employees.findOne({
|
|
order: [['id', 'ASC']],
|
|
offset: 0,
|
|
});
|
|
if (Employee0?.setDepartment) {
|
|
await Employee0.setDepartment(relatedDepartment0);
|
|
}
|
|
|
|
const relatedDepartment1 = await Departments.findOne({
|
|
offset: Math.floor(Math.random() * (await Departments.count())),
|
|
});
|
|
const Employee1 = await Employees.findOne({
|
|
order: [['id', 'ASC']],
|
|
offset: 1,
|
|
});
|
|
if (Employee1?.setDepartment) {
|
|
await Employee1.setDepartment(relatedDepartment1);
|
|
}
|
|
|
|
const relatedDepartment2 = await Departments.findOne({
|
|
offset: Math.floor(Math.random() * (await Departments.count())),
|
|
});
|
|
const Employee2 = await Employees.findOne({
|
|
order: [['id', 'ASC']],
|
|
offset: 2,
|
|
});
|
|
if (Employee2?.setDepartment) {
|
|
await Employee2.setDepartment(relatedDepartment2);
|
|
}
|
|
|
|
const relatedDepartment3 = await Departments.findOne({
|
|
offset: Math.floor(Math.random() * (await Departments.count())),
|
|
});
|
|
const Employee3 = await Employees.findOne({
|
|
order: [['id', 'ASC']],
|
|
offset: 3,
|
|
});
|
|
if (Employee3?.setDepartment) {
|
|
await Employee3.setDepartment(relatedDepartment3);
|
|
}
|
|
|
|
const relatedDepartment4 = await Departments.findOne({
|
|
offset: Math.floor(Math.random() * (await Departments.count())),
|
|
});
|
|
const Employee4 = await Employees.findOne({
|
|
order: [['id', 'ASC']],
|
|
offset: 4,
|
|
});
|
|
if (Employee4?.setDepartment) {
|
|
await Employee4.setDepartment(relatedDepartment4);
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
up: async (queryInterface, Sequelize) => {
|
|
await Departments.bulkCreate(DepartmentsData);
|
|
|
|
await Employees.bulkCreate(EmployeesData);
|
|
|
|
await Promise.all([
|
|
// Similar logic for "relation_many"
|
|
|
|
await associateDepartmentWithLeader(),
|
|
|
|
// Similar logic for "relation_many"
|
|
|
|
await associateEmployeeWithDepartment(),
|
|
]);
|
|
},
|
|
|
|
down: async (queryInterface, Sequelize) => {
|
|
await queryInterface.bulkDelete('departments', null, {});
|
|
|
|
await queryInterface.bulkDelete('employees', null, {});
|
|
},
|
|
};
|