Vibekit

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

BefehlAktion
bun run db:generateGeneriert 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 },
});

On this page