mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-02-16 20:13:49 +00:00
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import argon2 from 'argon2';
|
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
import { faker } from '@faker-js/faker';
|
|
import crypto from 'crypto';
|
|
import DBClient from '../../DBClient';
|
|
|
|
interface CreateNewUsersArgs {
|
|
numberOfUsers: number;
|
|
}
|
|
|
|
const createNewUsers = async ({ numberOfUsers }: CreateNewUsersArgs) => {
|
|
const prisma = DBClient.instance;
|
|
const userPromises = [];
|
|
|
|
const hashedPasswords = await Promise.all(
|
|
Array.from({ length: numberOfUsers }, () => argon2.hash(faker.internet.password())),
|
|
);
|
|
|
|
// eslint-disable-next-line no-plusplus
|
|
for (let i = 0; i < numberOfUsers; i++) {
|
|
const randomValue = crypto.randomBytes(2).toString('hex');
|
|
const firstName = faker.name.firstName();
|
|
const lastName = faker.name.lastName();
|
|
const username = `${firstName[0]}.${lastName}.${randomValue}`;
|
|
const email = faker.internet.email(firstName, randomValue, 'example.com');
|
|
|
|
const hash = hashedPasswords[i];
|
|
const dateOfBirth = faker.date.birthdate({ mode: 'age', min: 19 });
|
|
const createdAt = faker.date.past(1);
|
|
userPromises.push(
|
|
prisma.user.create({
|
|
data: {
|
|
firstName,
|
|
lastName,
|
|
email,
|
|
username,
|
|
dateOfBirth,
|
|
createdAt,
|
|
hash,
|
|
},
|
|
}),
|
|
);
|
|
}
|
|
return Promise.all(userPromises);
|
|
};
|
|
|
|
export default createNewUsers;
|