This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "sqlite"
|
||||
url = env("DATABASE_URL")
|
||||
}
|
||||
|
||||
model User {
|
||||
id Int @id @default(autoincrement())
|
||||
username String @unique
|
||||
password String
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
model Car {
|
||||
id Int @id @default(autoincrement())
|
||||
regNumber String @unique
|
||||
make String?
|
||||
model String?
|
||||
color String?
|
||||
year Int?
|
||||
ownerName String?
|
||||
ownerPhone String?
|
||||
ownerEmail String?
|
||||
vin String?
|
||||
engineNumber String?
|
||||
mileage Int?
|
||||
notes String? @default("")
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
orders Order[]
|
||||
parts Part[]
|
||||
|
||||
@@index([regNumber])
|
||||
@@index([ownerName])
|
||||
}
|
||||
|
||||
model Order {
|
||||
id Int @id @default(autoincrement())
|
||||
carId Int
|
||||
car Car @relation(fields: [carId], references: [id], onDelete: Cascade)
|
||||
status String @default("open") // open, closed
|
||||
mileage Int?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
tasks Task[]
|
||||
total Float @default(0)
|
||||
laborHours Float @default(0)
|
||||
hourlyRate Float @default(50)
|
||||
}
|
||||
|
||||
model Task {
|
||||
id Int @id @default(autoincrement())
|
||||
orderId Int
|
||||
order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)
|
||||
title String
|
||||
status String @default("todo") // todo, finished
|
||||
finishedAt DateTime?
|
||||
laborHours Float @default(0)
|
||||
hourlyRate Float @default(50)
|
||||
partsCost Float @default(0)
|
||||
laborCost Float @default(0)
|
||||
price Float @default(0)
|
||||
notes String? @default("")
|
||||
orderIndex Int @default(0)
|
||||
mileage Int?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
parts TaskPart[]
|
||||
|
||||
@@index([status])
|
||||
@@index([finishedAt])
|
||||
}
|
||||
|
||||
model Part {
|
||||
id Int @id @default(autoincrement())
|
||||
name String
|
||||
manufacturer String?
|
||||
supplierLink String?
|
||||
url String?
|
||||
purchasePrice Float @default(0)
|
||||
notes String? @default("")
|
||||
carId Int?
|
||||
car Car? @relation(fields: [carId], references: [id], onDelete: SetNull)
|
||||
isGlobal Boolean @default(false)
|
||||
orderId Int?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
tasks TaskPart[]
|
||||
|
||||
@@index([name])
|
||||
}
|
||||
|
||||
model TaskPart {
|
||||
id Int @id @default(autoincrement())
|
||||
taskId Int
|
||||
task Task @relation(fields: [taskId], references: [id], onDelete: Cascade)
|
||||
partId Int
|
||||
part Part @relation(fields: [partId], references: [id], onDelete: Cascade)
|
||||
qty Int @default(1)
|
||||
price Float @default(0)
|
||||
|
||||
@@unique([taskId, partId])
|
||||
}
|
||||
|
||||
model QuickTask {
|
||||
id Int @id @default(autoincrement())
|
||||
title String @unique
|
||||
useCount Int @default(0)
|
||||
laborHours Float @default(0)
|
||||
hourlyRate Float @default(50)
|
||||
price Float? // manual override stored in cents/euros
|
||||
createdAt DateTime @default(now())
|
||||
parts QuickTaskPart[]
|
||||
}
|
||||
|
||||
model QuickTaskPart {
|
||||
id Int @id @default(autoincrement())
|
||||
quickTaskId Int
|
||||
quickTask QuickTask @relation(fields: [quickTaskId], references: [id], onDelete: Cascade)
|
||||
name String
|
||||
qty Int @default(1)
|
||||
price Float @default(0)
|
||||
isGlobal Boolean @default(false)
|
||||
globalPartId Int?
|
||||
}
|
||||
Reference in New Issue
Block a user