// This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema // Looking for ways to speed up your queries, or scale easily with your serverless or edge functions? // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model Admin { id String @id @default(cuid()) firstName String surname String email String @unique password String phone String? authLevel String @default("admin") createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model ShiftManager { id String @id @default(cuid()) empNo String @unique firstName String surname String email String? password String? phone String? status String @default("active") teams Team[] shifts Shift[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Worker { id String @id @default(cuid()) empNo String @unique firstName String surname String email String? password String? phone String? jobPosition String status String @default("active") teamId String? team Team? @relation(fields: [teamId], references: [id]) shiftTeamMembers ShiftTeamMember[] machineShiftReports MachineShiftReport[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Team { id String @id @default(cuid()) name String @unique shiftManagerId String shiftManager ShiftManager @relation(fields: [shiftManagerId], references: [id]) workers Worker[] shiftTeamMembers ShiftTeamMember[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Machine { id String @id @default(cuid()) name String @unique status String @default("active") machineType String bottlesPerMin Int shiftTeamMembers ShiftTeamMember[] machineShiftReports MachineShiftReport[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Shift { id String @id @default(cuid()) name String shiftManagerId String shiftManager ShiftManager @relation(fields: [shiftManagerId], references: [id]) startTime DateTime endTime DateTime shiftDate DateTime status String @default("active") createdAt DateTime @default(now()) updatedAt DateTime @updatedAt shiftTeamMembers ShiftTeamMember[] machineShiftReports MachineShiftReport[] } model ShiftTeamMember { id String @id @default(cuid()) shiftId String shift Shift @relation(fields: [shiftId], references: [id]) teamId String team Team @relation(fields: [teamId], references: [id]) workerId String worker Worker @relation(fields: [workerId], references: [id]) shiftRole String machineId String? machine Machine? @relation(fields: [machineId], references: [id]) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model MachineShiftReport { id String @id @default(cuid()) shiftId String shift Shift @relation(fields: [shiftId], references: [id]) machineId String machine Machine @relation(fields: [machineId], references: [id]) workerId String worker Worker @relation(fields: [workerId], references: [id]) wallThickness Json? sectionWeights Json? station1Weights Json? safetyChecklist Json? filmDetails Json? bottleWeightTracking Json? hourlyQualityChecks Json? seamLeakTest Json? productionParameters Json? productionTracking Json? averageWeight Float? totalBagsMade Int? qualityMetrics Json? outputMetrics Json? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }