Files
toir-light-v14/backend/prisma/schema.prisma
2026-04-25 14:01:39 +00:00

206 lines
5.1 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
enum EquipmentStatus {
Active
Repair
Reserve
WriteOff
}
enum laborOperation {
Manual
MachineManual
Machine
}
enum EnumPeriodicityTO {
Ежедневное
Еженедельное
Ежемесячное
Полугодовое
Годовое
}
enum Role {
Исполнитель
Подписант
Пользователь
}
enum CategoryPart {
Расходник
Запчасть
Инструмент
Спецодежда
}
enum EquipmentType {
Производственное
Энергетическое
Насосное
Компрессорное
}
enum RepairKind {
TO
TR
TRE
KR
AR
MP
}
enum RepairOrderStatus {
Draft
Approved
InWork
Done
Cancelled
}
model Equipment {
id String @id @default(uuid())
name String
serialNumber String
dateOfInspection DateTime? @db.Date
inventoryNumber String @unique
equipmentType EquipmentType
periodicityTO EnumPeriodicityTO
status EquipmentStatus @default(Active)
commissionedAt DateTime? @db.Date
totalEngineHours Decimal?
engineHoursSinceLastRepair Decimal?
lastRepairAt DateTime? @db.Date
notes String?
workAsPartOf laborOperation?
fuelСonsumed Float?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Relations
repairOrders RepairOrder[]
changeEquipmentStatuses ChangeEquipmentStatus[]
consumptionRegistrations ConsumptionRegistration[]
}
model Employee {
code String @id
fullName String
role Role
position String
price Float?
phoneNumber Float?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Self-referential relation for boss/subordinates
bossCode String?
boss Employee? @relation("EmployeeBoss", fields: [bossCode], references: [code])
subordinates Employee[] @relation("EmployeeBoss")
// Relations
confirmationDocuments ConfirmationDocument[]
categoryResources CategoryResource[]
}
model Part {
id String @id @default(uuid())
name String
categories CategoryPart?
price Float?
description String?
serialNumber String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Relations
categoryResources CategoryResource[]
}
model CategoryResource {
id String @id @default(uuid())
partId String?
employeeCode String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Relations
part Part? @relation(fields: [partId], references: [id])
employee Employee? @relation(fields: [employeeCode], references: [code])
}
model RepairOrder {
id String @id @default(uuid())
number String @unique
date DateTime @db.Date
equipmentId String
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?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Relations
equipment Equipment @relation(fields: [equipmentId], references: [id])
confirmationDocuments ConfirmationDocument[]
}
model ChangeEquipmentStatus {
id String @id @default(uuid())
equipmentId String
newStatus EquipmentStatus
number String?
comment String?
date DateTime @db.Date
responsible String?
document String? // Storing file path/URL
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Relations
equipment Equipment @relation(fields: [equipmentId], references: [id])
}
model ConfirmationDocument {
id String @id @default(uuid())
number String?
date DateTime @db.Date
managerCode String?
orderId String
confirmed Boolean?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Relations
manager Employee? @relation(fields: [managerCode], references: [code])
order RepairOrder @relation(fields: [orderId], references: [id])
}
model ConsumptionRegistration {
id String @id @default(uuid())
number String?
date DateTime @db.Date
equipmentId String
totalEngineHours Decimal?
fuelConsumption Float?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Relations
equipment Equipment @relation(fields: [equipmentId], references: [id])
}