Scaffold and Phase 1

This commit is contained in:
2026-05-02 19:46:42 -05:00
parent ab74e7cad4
commit d909cb7c30
92 changed files with 4967 additions and 0 deletions
+84
View File
@@ -0,0 +1,84 @@
/**
* 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());