import { PrismaClient } from '@prisma/client'; import { generateHash } from 'src/utils/hash'; import { Config, names, uniqueNamesGenerator } from 'unique-names-generator'; import { faker } from '@faker-js/faker'; import { faker as enFaker } from '@faker-js/faker/locale/en_US'; import { faker as zhFaker } from '@faker-js/faker/locale/zh_CN'; import { faker as jaFaker } from '@faker-js/faker/locale/ja'; import { faker as koFaker } from '@faker-js/faker/locale/ko'; import { faker as twFaker } from '@faker-js/faker/locale/zh_TW'; const SEED_EMAIL_DOMAIN = 'seed.com'; const prisma = new PrismaClient(); async function userItem() { const config: Config = { dictionaries: [names] }; const firstName = uniqueNamesGenerator(config); const lastName = uniqueNamesGenerator(config); const username = `${firstName.toLowerCase()}-${lastName.toLowerCase()}`; const alice = await prisma.userItem.upsert({ where: { id: 0 }, update: {}, create: { name: `${firstName} ${lastName}`, city: '', role: '', email: `${username}@${SEED_EMAIL_DOMAIN}`, state: '', status: '', address: '', country: '', zipCode: '', company: '', avatarUrl: '', phoneNumber: '', isVerified: true, // username, password: await generateHash('Abc1234!'), }, }); for (let i = 1; i < 20; i++) { const CJK_LOCALES = { en: enFaker, zh: zhFaker, ja: jaFaker, ko: koFaker, tw: twFaker, }; function getRandomCJKFaker() { const locales = Object.keys(CJK_LOCALES); const randomKey = locales[Math.floor(Math.random() * locales.length)] as keyof typeof CJK_LOCALES; return CJK_LOCALES[randomKey]; } const randomFaker = getRandomCJKFaker(); const alice = await prisma.userItem.upsert({ where: { id: i }, update: {}, create: { name: randomFaker.person.fullName(), city: randomFaker.location.city(), role: 'user', email: randomFaker.internet.email(), state: randomFaker.location.state(), status: '', address: randomFaker.location.streetAddress(), country: randomFaker.location.country(), zipCode: randomFaker.location.zipCode(), company: randomFaker.company.name(), avatarUrl: randomFaker.image.avatar(), phoneNumber: randomFaker.phone.number(), isVerified: true, // username: randomFaker.internet.username(), password: await generateHash('Abc1234!'), }, }); } console.log('seed user done'); } const userItemSeed = userItem() .then(async () => { await prisma.$disconnect(); }) .catch(async (e) => { console.error(e); await prisma.$disconnect(); process.exit(1); }); export { userItemSeed };