Datenbank & ORM
Verwalten Sie Ihr Datenschema, Modelle und typsichere Abfragen mit Prisma.
VibeKit nutzt Prisma ORM mit PostgreSQL als primäre relationale Datenbank. Das Schema ist in packages/database/prisma/schema.prisma definiert.
Schemadefinition
Das Prisma-Schema definiert Ihre Datenmodelle, Relationen und Generatoren:
datasource db {
provider = "postgresql"
}
generator client {
provider = "prisma-client"
output = "../src/generated/prisma"
}
generator zod {
provider = "prisma-zod-generator"
output = "../src/zod"
config = "./zod-generator.config.json"
}Kern-Modelle
User: Benutzerkontodetails, E-Mail-Verifizierungsstatus, Rollen (user,admin) und Relationen zu Sitzungen, Teams und Käufen.UserSession: Aktive Anmeldesitzungen, verwaltet von Better Auth.Team&TeamMembership: Mandantenfähige Organisationen und Mitgliedsrollen (OWNER,MEMBER).Subscription: Aktuelle Team-Berechtigung für Käufe oder Abonnements.PaymentRecord: Anbieter-Ereignisse, Käufe und Rückerstattungen mit eindeutiger Anbieter-ID.SystemSetting: Gespeicherte Modul-, Template- und Integrationskonfiguration.
Datenbank-Befehle
| Befehl | Aktion |
|---|---|
bun run db:generate | Generiert den Prisma-Client und die Zod-Validierungsschemata. |
bun run db:push | Überträgt Schemaänderungen direkt in die lokale Datenbank ohne Migrationsdateien. |
bun run db:studio | Öffnet Prisma Studio im Browser zum Anzeigen und Bearbeiten von Datensätzen. |
Entwicklung vs. Produktion
Verwenden Sie bun run db:push in der frühen Entwicklung beim Experimentieren mit Schemafeldern. In Produktion sollten Sie immer geprüfte Migrationsdateien (prisma migrate deploy) nutzen. Bearbeiten Sie niemals Dateien in packages/database/src/zod manuell.
Datenbank abfragen
Importieren Sie den Singleton-db-Client aus dem database-Workspace:
import { db } from "database";
// Benutzer nach E-Mail mit aktiven Sitzungen abrufen
const user = await db.user.findUnique({
where: { email: "[email protected]" },
include: { sessions: true },
});