85 lines
2.1 KiB
TypeScript
85 lines
2.1 KiB
TypeScript
|
|
/**
|
|||
|
|
* Seed script – creates a default Organization and one demo Event.
|
|||
|
|
* Run: npm run db:seed -w packages/server
|
|||
|
|
*/
|
|||
|
|
import { PrismaClient } from "@prisma/client";
|
|||
|
|
|
|||
|
|
const prisma = new PrismaClient();
|
|||
|
|
|
|||
|
|
async function main() {
|
|||
|
|
const org = await prisma.organization.upsert({
|
|||
|
|
where: { slug: "demo-org" },
|
|||
|
|
update: {},
|
|||
|
|
create: {
|
|||
|
|
name: "Demo Nonprofit",
|
|||
|
|
slug: "demo-org",
|
|||
|
|
primaryColor: "#2563eb",
|
|||
|
|
publicUrl: "https://bid.example.org",
|
|||
|
|
localHostname: "auction.event.lan",
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
console.log(`Organization: ${org.name} (${org.id})`);
|
|||
|
|
|
|||
|
|
const event = await prisma.auctionEvent.upsert({
|
|||
|
|
where: { organizationId_slug: { organizationId: org.id, slug: "gala-2026" } },
|
|||
|
|
update: {},
|
|||
|
|
create: {
|
|||
|
|
organizationId: org.id,
|
|||
|
|
name: "Annual Gala 2026",
|
|||
|
|
slug: "gala-2026",
|
|||
|
|
description: "Our flagship annual fundraising gala.",
|
|||
|
|
startAt: new Date("2026-10-15T18:00:00Z"),
|
|||
|
|
endAt: new Date("2026-10-15T23:00:00Z"),
|
|||
|
|
status: "draft",
|
|||
|
|
timezone: "America/New_York",
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
console.log(`Event: ${event.name} (${event.id})`);
|
|||
|
|
|
|||
|
|
const liveAuction = await prisma.auction.upsert({
|
|||
|
|
where: { id: "seed-live-auction" },
|
|||
|
|
update: {},
|
|||
|
|
create: {
|
|||
|
|
id: "seed-live-auction",
|
|||
|
|
eventId: event.id,
|
|||
|
|
type: "live",
|
|||
|
|
name: "Live Auction",
|
|||
|
|
sortOrder: 0,
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
const silentAuction = await prisma.auction.upsert({
|
|||
|
|
where: { id: "seed-silent-auction" },
|
|||
|
|
update: {},
|
|||
|
|
create: {
|
|||
|
|
id: "seed-silent-auction",
|
|||
|
|
eventId: event.id,
|
|||
|
|
type: "silent",
|
|||
|
|
name: "Silent Auction",
|
|||
|
|
sortOrder: 1,
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
console.log(`Auctions: ${liveAuction.name}, ${silentAuction.name}`);
|
|||
|
|
|
|||
|
|
const admin = await prisma.staffUser.upsert({
|
|||
|
|
where: { email: "admin@example.org" },
|
|||
|
|
update: {},
|
|||
|
|
create: {
|
|||
|
|
organizationId: org.id,
|
|||
|
|
email: "admin@example.org",
|
|||
|
|
name: "Demo Admin",
|
|||
|
|
role: "admin",
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
console.log(`Staff: ${admin.email}`);
|
|||
|
|
console.log("Seed complete.");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
main()
|
|||
|
|
.catch((e) => { console.error(e); process.exit(1); })
|
|||
|
|
.finally(() => prisma.$disconnect());
|