// apps/api/prisma/schema.prisma generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } enum Role { ADMIN SUPERVISOR EMPLOYEE } enum SpaceType { DESK MEETING_ROOM AMENITY } model Organization { id String @id @default(uuid()) name String logoUrl String? buildings Building[] users User[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Building { id String @id @default(uuid()) name String description String? @db.Text imageUrl String? organization Organization @relation(fields: [organizationId], references: [id]) organizationId String floors Floor[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Floor { id String @id @default(uuid()) name String? number Int building Building @relation(fields: [buildingId], references: [id]) buildingId String planImageUrl String? spaces Space[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Space { id String @id @default(uuid()) name String type SpaceType floor Floor @relation(fields: [floorId], references: [id]) floorId String x Float? // Percentage-based for responsiveness (Stage 3) y Float? width Float? // Percentage-based for resizing (Stage 4) height Float? // Percentage-based for resizing (Stage 4) reservations Reservation[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model User { id String @id @default(uuid()) email String @unique password String role Role @default(EMPLOYEE) organization Organization @relation(fields: [organizationId], references: [id]) organizationId String reservations Reservation[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Reservation { id String @id @default(uuid()) startTime DateTime endTime DateTime user User @relation(fields: [userId], references: [id]) userId String space Space @relation(fields: [spaceId], references: [id]) spaceId String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }