import { hashPassword } from "../src/utils/auth" import { prisma } from "../src/utils/prisma" import { SmtpEncryption } from "./client" import dayjs from "dayjs" async function seed() { if (!(await prisma.organization.findFirst())) { await prisma.organization.create({ data: { name: "Test Organization", description: "Test Description", GeneralSettings: { create: {}, }, EmailDeliverySettings: { create: { rateLimit: 100, }, }, SmtpSettings: { create: { host: "smtp.test.com", port: 587, username: "test", password: "test", encryption: SmtpEncryption.STARTTLS, }, }, }, }) } const orgId = ( await prisma.organization.findFirst({ orderBy: { createdAt: "asc", }, }) )?.id if (!orgId) { throw new Error("not reachable") } if (!(await prisma.user.findFirst())) { await prisma.user.create({ data: { name: "Admin", email: "admin@example.com", password: await hashPassword("password123"), UserOrganizations: { create: { organizationId: orgId, }, }, }, }) } // Create 5000 subscribers const subscribers = Array.from({ length: 5000 }, (_, i) => ({ name: `Subscriber ${i + 1}`, email: `subscriber${i + 1}@example.com`, organizationId: orgId, createdAt: dayjs().subtract(12, "days").toDate(), })) await prisma.subscriber.createMany({ data: subscribers, skipDuplicates: true, }) // Then 10 more for each day for 10 days const now = new Date() for (let d = 0; d < 10; d++) { const day = dayjs(now) .subtract(d + 1, "day") .toDate() const dailySubs = Array.from({ length: 10 }, (_, i) => ({ name: `DailySub ${d + 1}-${i + 1}`, email: `dailysub${d + 1}-${i + 1}@example.com`, organizationId: orgId, createdAt: day, updatedAt: day, })) await prisma.subscriber.createMany({ data: dailySubs, skipDuplicates: true, }) } } seed() .then(async () => { await prisma.$disconnect() }) .catch(async (e) => { console.error(e) await prisma.$disconnect() })