muller-reporting-sys/prisma/schema.prisma
2025-11-12 22:21:35 +03:00

139 lines
4.5 KiB
Plaintext

// 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
}