87 lines
2.7 KiB
JavaScript
87 lines
2.7 KiB
JavaScript
const bcrypt = require("bcryptjs");
|
|
|
|
const createUsers = async (queryInterface, roles, users) => {
|
|
// Create Authentications
|
|
await queryInterface.bulkInsert('Authentications', users.map((player) => {
|
|
return {
|
|
email: player.email,
|
|
password: bcrypt.hashSync(player.password, 8),
|
|
createdAt: new Date(),
|
|
updatedAt: new Date()
|
|
}
|
|
}));
|
|
|
|
const auths = await queryInterface.select(null, 'Authentications');
|
|
|
|
// Create Users
|
|
await queryInterface.bulkInsert('Users', users.map(player => {
|
|
const auth = auths.find(auth => auth.email === player.email);
|
|
return {
|
|
firstName: player.firstName,
|
|
lastName: player.lastName,
|
|
dateOfBirth: player.dateOfBirth,
|
|
authId: auth ? auth.id : null,
|
|
createdAt: new Date(),
|
|
updatedAt: new Date()
|
|
};
|
|
}));
|
|
|
|
const rolesByName = roles.reduce((map, role) => {
|
|
map[role.name] = role;
|
|
return map;
|
|
}, {});
|
|
|
|
const createdUsers = await queryInterface.select(null, 'Users');
|
|
const userRoles = users.flatMap(user => {
|
|
return user.roles.map(role => ({
|
|
id: createdUsers.find(createdUser => createdUser.firstName === user.firstName && createdUser.lastName === user.lastName).id,
|
|
role: rolesByName[role]
|
|
}));
|
|
});
|
|
|
|
// Create UserRoles
|
|
await queryInterface.bulkInsert('UserRoles', userRoles.map(userRole => {
|
|
return {
|
|
userId: userRole.id,
|
|
roleId: userRole.role.id,
|
|
createdAt: new Date(),
|
|
updatedAt: new Date()
|
|
};
|
|
}));
|
|
|
|
return createdUsers;
|
|
}
|
|
|
|
const createPlayer = async (queryInterface, roles, players) => {
|
|
const users = await createUsers(queryInterface, roles, players.map(player => ({
|
|
...player,
|
|
roles: player.roles || ['player']
|
|
})));
|
|
|
|
// Create Players
|
|
await queryInterface.bulkInsert('Players', players.map(player => {
|
|
const user = users.find(user => user.firstName === player.firstName && user.lastName === player.lastName);
|
|
return {
|
|
height: player.height ? player.height : null,
|
|
weight: player.weight ? player.weight : null,
|
|
gender: player.gender,
|
|
bats: player.bats,
|
|
throws: player.throws,
|
|
state: player.state,
|
|
jerseyNumber: player.jerseyNumber,
|
|
userId: user ? user.id : null,
|
|
createdAt: new Date(),
|
|
updatedAt: new Date()
|
|
};
|
|
}));
|
|
|
|
const createdPlayers = await queryInterface.select(null, 'Players');
|
|
|
|
return createdPlayers;
|
|
}
|
|
|
|
module.exports = {
|
|
createPlayer,
|
|
createUsers
|
|
}
|