diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 5759b32..6b85fab 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -111,6 +111,13 @@ enum GuestCodeStatus { REVOKED } +enum InvitationStatus { + PENDING + ACCEPTED + EXPIRED + REVOKED +} + // ---------------------------------------------------------------------------- // USERS // ---------------------------------------------------------------------------- @@ -143,6 +150,7 @@ model User { handoverProtocols HandoverProtocol[] guestCodesIssued GuestCode[] notifications Notification[] + invitationsSent Invitation[] @relation("InvitationsSent") @@map("users") } @@ -168,10 +176,35 @@ model Room { tickets Ticket[] inventoryItems Inventory[] meterReadings MeterReading[] + invitations Invitation[] @@map("rooms") } +// ---------------------------------------------------------------------------- +// INVITATIONS (Vermieter lädt Mieter per E-Mail ein) +// ---------------------------------------------------------------------------- + +model Invitation { + id String @id @default(uuid()) + email String + token String @unique + role UserRole @default(TENANT) + roomId String? @map("room_id") + room Room? @relation(fields: [roomId], references: [id]) + invitedById String @map("invited_by_id") + invitedBy User @relation("InvitationsSent", fields: [invitedById], references: [id]) + status InvitationStatus @default(PENDING) + expiresAt DateTime @map("expires_at") + acceptedAt DateTime? @map("accepted_at") + + createdAt DateTime @default(now()) @map("created_at") + + @@index([email]) + @@index([status]) + @@map("invitations") +} + // ---------------------------------------------------------------------------- // CONTRACTS // ----------------------------------------------------------------------------