// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema generator client { provider = "prisma-client-js" } datasource db { provider = "sqlite" // Lokal: file:./dev.db (relativ zu diesem Verzeichnis) // Container: file:/app/data/syncova.db url = env("DATABASE_URL") } // Datenschutzerklärung model for structured privacy policies model PrivacyPolicy { id Int @id @default(autoincrement()) // Auto-Increment Primary Key title String // Pflichtfeld - Title of privacy policy responsible String // Verantwortlicher im Sinne der DSGVO contactDPO String // Kontaktdaten des Datenschutzbeauftragten dataSubjectsRights String // Betroffenen-Rechte complaintRight String // Beschwerderecht bei der Aufsichtsbehörde withdrawalRight String // Widerrufsrecht bei Einwilligung processingDescription String // Bezeichnung der Verarbeitungstätigkeit processingPurposes String? // Optional - Ihre Daten werden zu folgendem Zweck erhoben legalBasis String? // Optional - Ihre Daten wurden aufgrund folgender Rechtsgrundlage erhoben recipients String // Wir beabsichtigen, Ihre Daten an folgende Empfänger weiterzuleiten storageDuration String? // Optional - Dauer der Speicherung der personenbezogenen Daten dataSource String? // Optional - Wir haben Ihre Daten aus folgender Quelle erhalten provisionObligation String? // Optional - Ihre Pflicht zur Bereitstellung der Daten (Art. 13 Abs. 2 lit. e DSGVO) provisionConsequences String? // Optional - Folgen, wenn Sie die Daten nicht angeben createdAt DateTime @default(now()) // Automatisch bei Erstellung gesetzt updatedAt DateTime @updatedAt // Automatisch bei Update gesetzt isPublic Boolean @default(true) // Default true, bestimmt ob die Datenschutzerklärung öffentlich sichtbar ist } // User model for authentication model User { id Int @id @default(autoincrement()) email String @unique name String? password String role UserRole @default(ADMIN) isActive Boolean @default(true) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt createdBy Int? createdByUser User? @relation("UserCreatedBy", fields: [createdBy], references: [id]) createdUsers User[] @relation("UserCreatedBy") // NextAuth fields accounts Account[] sessions Session[] } model Account { id Int @id @default(autoincrement()) userId Int type String provider String providerAccountId String refresh_token String? access_token String? expires_at Int? token_type String? scope String? id_token String? session_state String? user User @relation(fields: [userId], references: [id], onDelete: Cascade) @@unique([provider, providerAccountId]) } model Session { id Int @id @default(autoincrement()) sessionToken String @unique userId Int expires DateTime user User @relation(fields: [userId], references: [id], onDelete: Cascade) } model VerificationToken { identifier String token String @unique expires DateTime @@unique([identifier, token]) } enum UserRole { ADMIN SUPER_ADMIN }