mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-02-16 10:42:08 +00:00
Uses react-intersection-observer to load more comments when the last of the previously loaded comments is in the viewport.
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(8).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;
|