1/** Creates a verified dev user + org + project + API key. Prints the key once. */2import { getDb, closeDb, users, organizations, organizationMembers, projects, apiKeys } from "@fetcha/db";3import { generateApiKey, newId } from "@fetcha/core";4import { randomUUID } from "node:crypto";56const email = process.argv[2] ?? "dev@fetcha.local";7async function main() {8 const db = getDb();9 const userId = randomUUID();10 await db.insert(users).values({ id: userId, name: "Dev User", email, emailVerified: true, role: "admin" }).onConflictDoNothing();11 const [u] = await db.select().from(users).where((await import("drizzle-orm")).eq(users.email, email));12 const orgId = newId("org");13 await db.insert(organizations).values({ id: orgId, name: "Dev Org", slug: `dev-${orgId.slice(4, 10)}`, ownerUserId: u!.id, providerVisibility: true });14 await db.insert(organizationMembers).values({ organizationId: orgId, userId: u!.id, role: "owner" });15 const projectId = newId("proj");16 await db.insert(projects).values({ id: projectId, organizationId: orgId, name: "Development", slug: "development" });17 const key = generateApiKey("live");18 await db.insert(apiKeys).values({ id: newId("key"), organizationId: orgId, projectId, createdByUserId: u!.id, name: "dev", keyHash: key.hash, keyPrefix: key.prefix, last4: key.last4, mode: "live" });19 console.log(JSON.stringify({ userId: u!.id, orgId, projectId, apiKey: key.plaintext }));20 await closeDb();21}22main().catch((e) => { console.error(e); process.exit(1); });23