datasource db { provider = "postgresql" url = env("DATABASE_URL") } generator client { provider = "prisma-client-js" } enum EquipmentType { // Will be populated based on actual equipment types UNKNOWN } enum EnumPeriodicityTO { // Will be populated based on actual periodicity values UNKNOWN } enum EquipmentStatus { // Will be populated based on actual status values UNKNOWN } enum Role { // Will be populated based on actual role values UNKNOWN } enum CategoryPart { // Will be populated based on actual category values UNKNOWN } enum RepairKind { // Will be populated based on actual repair kind values UNKNOWN } enum RepairOrderStatus { Draft // Will be populated with other status values UNKNOWN } model Equipment { id String @id @default(uuid()) name String serialNumber String inventoryNumber String @unique equipmentType EquipmentType dateOfInspection DateTime? @db.Date periodicityTO EnumPeriodicityTO location String? status EquipmentStatus commissionedAt DateTime? @db.Date totalEngineHours Decimal? engineHoursSinceLastRepair Decimal? lastRepairAt DateTime? @db.Date notes String? // Relations repairOrders RepairOrder[] changeEquipmentStatuses ChangeEquipmentStatus[] consumptionRegistrations ConsumptionRegistration[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Employee { code String @id fullName String role Role position String price Float? phoneNumber Float? // Self-referential relation for boss/subordinates bossCode String? boss Employee? @relation("EmployeeHierarchy", fields: [bossCode], references: [code]) subordinates Employee[] @relation("EmployeeHierarchy") // Relations confirmationDocuments ConfirmationDocument[] categoryResources CategoryResource[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Part { id String @id @default(uuid()) name String categories CategoryPart? price Float? description String? serialNumber String? // Relations categoryResources CategoryResource[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model CategoryResource { id String @id @default(uuid()) // Relations partId String? part Part? @relation(fields: [partId], references: [id]) employeeCode String? employee Employee? @relation(fields: [employeeCode], references: [code]) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model RepairOrder { id String @id @default(uuid()) number String @unique date DateTime @db.Date equipmentId String equipment Equipment @relation(fields: [equipmentId], references: [id]) repairKind RepairKind status RepairOrderStatus @default(Draft) plannedAt DateTime @db.Date startedAt DateTime? @db.Date completedAt DateTime? @db.Date contractor String? engineHoursAtRepair Decimal? description String? notes String? confirmed Boolean? // Relations confirmationDocuments ConfirmationDocument[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model ChangeEquipmentStatus { id String @id @default(uuid()) equipmentId String equipment Equipment @relation(fields: [equipmentId], references: [id]) newStatus EquipmentStatus number String? comment String? date DateTime @db.Date responsible String? document String? // File path or reference createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model ConfirmationDocument { id String @id @default(uuid()) number String? date DateTime @db.Date managerCode String? manager Employee? @relation(fields: [managerCode], references: [code]) orderId String order RepairOrder @relation(fields: [orderId], references: [id]) confirmed Boolean? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model ConsumptionRegistration { id String @id @default(uuid()) number String? date DateTime @db.Date equipmentId String equipment Equipment @relation(fields: [equipmentId], references: [id]) totalEngineHours Decimal? fuelConsumption Decimal? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }