evOo-local/packages/db/setup-user.ts
Ingo Wagner a570e9e71b feat: complete onboarding redesign + major file splits
Onboarding: emoji-first flow with shape/color selection, user preferences,
language setup (9 locales), and bot creation with avatarValue persistence.

executor.ts: split 4928→4159 lines into 8 modules (completion, computer,
effects, model, utils, tools, attachments, types).

pi-runtime.ts: split 1726→561 lines into 2 modules (model-config, tool-utils).

E2E: new onboarding-emoji-first tests + updated completeOnboarding helper.
2026-09-21 22:52:04 +00:00

109 lines
2.7 KiB
TypeScript

import { createDb } from "./src/client";
import { randomUUID } from "node:crypto";
process.env.DATABASE_URL = "postgres://rakazo:rakazodev@127.0.0.1:5433/rakazo";
const { prisma: db } = createDb(process.env.DATABASE_URL, { applicationName: "setup-user" });
const user = await db.user.findUnique({
where: { email: "ingo.wagner1303@gmail.com" },
select: { id: true, name: true },
});
if (!user) {
console.log("User nicht gefunden!");
await db.$disconnect();
process.exit(1);
}
console.log("User:", user);
// Step 1: Get or create Organization
let org = await db.organization.findUnique({ where: { slug: "ingo-workspace" } });
if (!org) {
org = await db.organization.create({
data: {
id: randomUUID(),
name: "Ingo's Workspace",
slug: "ingo-workspace",
createdAt: new Date(),
},
select: { id: true, name: true, slug: true },
});
console.log("Organization created:", org);
} else {
console.log("Organization exists:", org);
}
// Step 2: Get or create Organization Member
let member = await db.member.findUnique({
where: {
organizationId_userId: { organizationId: org.id, userId: user.id },
},
});
if (!member) {
member = await db.member.create({
data: {
id: randomUUID(),
userId: user.id,
organizationId: org.id,
role: "owner",
createdAt: new Date(),
},
});
console.log("Organization member created");
} else {
console.log("Organization member exists");
}
// Step 3: Get or create default Space
let space = await db.space.findFirst({
where: { organizationId: org.id, isDefault: true },
});
if (!space) {
space = await db.space.create({
data: {
id: randomUUID(),
name: "Mein Space",
isDefault: true,
createdByUserId: user.id,
organizationId: org.id,
},
select: { id: true, name: true },
});
console.log("Space created:", space);
} else {
console.log("Space exists:", space);
}
// Step 4: Get or create space member
const existingMember = await db.spaceMember.findUnique({
where: {
spaceId_userId: { spaceId: space.id, userId: user.id },
},
});
if (!existingMember) {
await db.spaceMember.create({
data: {
id: randomUUID(),
spaceId: space.id,
organizationId: org.id,
userId: user.id,
role: "owner",
createdAt: new Date(),
},
});
console.log("Space member created");
} else {
console.log("Space member exists");
}
// Verify
const finalSpaces = await db.space.findMany({
where: { organization: { members: { some: { userId: user.id } } } },
select: { id: true, name: true, isDefault: true },
});
console.log("\nUser spaces:", JSON.stringify(finalSpaces, null, 2));
await db.$disconnect();
console.log("\nDone!");