const { PrismaClient } = require('@prisma/client'); const { hash } = require('bcryptjs'); function getInitialStylistFromEnv(env = process.env) { return { id: BigInt(env.INITIAL_STYLIST_ID || '1'), username: env.INITIAL_STYLIST_USERNAME || 'Ogawa', email: env.INITIAL_STYLIST_EMAIL || 'stylist@example.com', password: env.INITIAL_STYLIST_PASSWORD || 'Passw0rd!', }; } async function seedInitialStylist(prisma, initialStylist, hashPassword) { const existing = await prisma.hairstylistUser.findUnique({ where: { id: initialStylist.id }, }); if (existing) { return 'existing'; } const password = await hashPassword(initialStylist.password, 10); await prisma.hairstylistUser.create({ data: { id: initialStylist.id, username: initialStylist.username, email: initialStylist.email, password, isDeleted: 0, }, }); return 'created'; } async function seedInitialData(prisma, options = {}) { const env = options.env || process.env; const hashPassword = options.hashPassword || hash; const initialStylist = getInitialStylistFromEnv(env); const stylist = await seedInitialStylist(prisma, initialStylist, hashPassword); return { stylist, stylistUsername: initialStylist.username, stylistEmail: initialStylist.email, }; } async function main() { const prisma = new PrismaClient(); try { const result = await seedInitialData(prisma); console.log( `Initial account ensured: stylist=${result.stylist}, account=${result.stylistUsername} <${result.stylistEmail}>`, ); } finally { await prisma.$disconnect(); } } if (require.main === module) { main().catch((error) => { console.error(error); process.exitCode = 1; }); } module.exports = { getInitialStylistFromEnv, seedInitialData, };