import { faker } from "@faker-js/faker"; import { PrismaClient } from "@prisma/client"; const prisma = new PrismaClient(); const DEFAULT_ISLANDS = ["Dharanboodhoo", "Feeali", "Nilandhoo", "Magoodhoo"]; async function main() { await prisma.user.upsert({ where: { phoneNumber: "+9607780588", }, update: {}, create: { name: "Admin", email: "admin@sarlink.net", emailVerified: true, firstPaymentDone: true, verified: true, address: "Dharanboodhoo", id_card: "A265117", dob: new Date("1990-01-01"), phoneNumber: "+9607780588", phoneNumberVerified: true, role: "ADMIN", }, }); const users = Array.from({ length: 25 }, () => ({ name: `${faker.person.fullName().split(" ")[1]} House-${crypto .randomUUID() .slice(0, 5)}`, email: faker.internet.email(), emailVerified: false, firstPaymentDone: false, verified: false, address: faker.location.streetAddress(), id_card: `A${Math.round(Math.random() * 999999)}`, dob: faker.date.between({ from: "1900-01-01", to: "2000-01-01", }), phoneNumber: String(faker.number.int({ min: 7000000, max: 9999999 })), phoneNumberVerified: false, role: "USER", })); const seedUsers = await Promise.all( users.map((user) => prisma.user.create({ data: user })), ); const FAKE_DEVICES = Array.from({ length: 25 }, () => ({ name: faker.commerce.productName(), mac: faker.internet.mac(), userId: seedUsers[Math.floor(Math.random() * seedUsers.length)].id, })); await prisma.device.createMany({ data: FAKE_DEVICES, }); const FAAFU_ATOLL = await prisma.atoll.create({ data: { name: "F", }, }); const islands = DEFAULT_ISLANDS.map((name) => ({ name, atollId: FAAFU_ATOLL.id, })); await prisma.island.createMany({ data: islands, }); } main() .then(() => prisma.$disconnect()) .catch(async (e) => { console.error(e); await prisma.$disconnect(); process.exit(1); });