144 lines
4.5 KiB
Plaintext
144 lines
4.5 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "sqlite"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model User {
|
|
id String @id @default(cuid())
|
|
name String
|
|
phone String @unique
|
|
role String
|
|
dealerId String?
|
|
dealer Dealer? @relation("DealerStaff", fields: [dealerId], references: [id])
|
|
passwordHash String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
assignments DealerAssignment[] @relation("SalesRepAssignments")
|
|
stageLogs StageLog[]
|
|
transfers StockTransfer[]
|
|
events Event[]
|
|
servicePoints ServicePoint[]
|
|
loginRequests LoginRequest[] @relation("DealerLoginRequests")
|
|
loginDecisions LoginRequest[] @relation("LoginDecisions")
|
|
}
|
|
|
|
model LoginRequest {
|
|
id String @id @default(cuid())
|
|
userId String
|
|
user User @relation("DealerLoginRequests", fields: [userId], references: [id], onDelete: Cascade)
|
|
status String
|
|
secretHash String
|
|
expiresAt DateTime
|
|
decidedById String?
|
|
decidedBy User? @relation("LoginDecisions", fields: [decidedById], references: [id])
|
|
decidedAt DateTime?
|
|
createdAt DateTime @default(now())
|
|
}
|
|
|
|
model Dealer {
|
|
id String @id @default(cuid())
|
|
name String
|
|
code String @unique
|
|
district String?
|
|
address String?
|
|
phone String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
staff User[] @relation("DealerStaff")
|
|
assignments DealerAssignment[]
|
|
stocks Stock[]
|
|
transfersFrom StockTransfer[] @relation("TransferFrom")
|
|
transfersTo StockTransfer[] @relation("TransferTo")
|
|
events Event[]
|
|
}
|
|
|
|
model DealerAssignment {
|
|
salesRepId String
|
|
dealerId String
|
|
createdAt DateTime @default(now())
|
|
salesRep User @relation("SalesRepAssignments", fields: [salesRepId], references: [id], onDelete: Cascade)
|
|
dealer Dealer @relation(fields: [dealerId], references: [id], onDelete: Cascade)
|
|
|
|
@@id([salesRepId, dealerId])
|
|
}
|
|
|
|
model Stock {
|
|
id String @id @default(cuid())
|
|
chassisNumber String @unique
|
|
engineNumber String @unique
|
|
model String
|
|
color String
|
|
currentDealerId String
|
|
currentDealer Dealer @relation(fields: [currentDealerId], references: [id])
|
|
dateReceived DateTime @default(now())
|
|
currentStage String @default("received")
|
|
paymentType String?
|
|
leaseProviderType String?
|
|
financeCompanyName String?
|
|
plateNumber String?
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
stageLogs StageLog[]
|
|
transfers StockTransfer[]
|
|
}
|
|
|
|
model StageLog {
|
|
id String @id @default(cuid())
|
|
stockId String
|
|
stock Stock @relation(fields: [stockId], references: [id], onDelete: Cascade)
|
|
stage String
|
|
loggedAt DateTime @default(now())
|
|
actorId String?
|
|
actor User? @relation(fields: [actorId], references: [id])
|
|
}
|
|
|
|
model StockTransfer {
|
|
id String @id @default(cuid())
|
|
stockId String
|
|
stock Stock @relation(fields: [stockId], references: [id], onDelete: Cascade)
|
|
fromDealerId String
|
|
fromDealer Dealer @relation("TransferFrom", fields: [fromDealerId], references: [id])
|
|
toDealerId String
|
|
toDealer Dealer @relation("TransferTo", fields: [toDealerId], references: [id])
|
|
actorId String
|
|
actor User @relation(fields: [actorId], references: [id])
|
|
transferredAt DateTime @default(now())
|
|
}
|
|
|
|
model Event {
|
|
id String @id @default(cuid())
|
|
dealerId String
|
|
dealer Dealer @relation(fields: [dealerId], references: [id])
|
|
planType String
|
|
month Int?
|
|
year Int?
|
|
title String
|
|
description String
|
|
expense Float
|
|
imageUrls String @default("[]")
|
|
createdById String
|
|
createdBy User @relation(fields: [createdById], references: [id])
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model ServicePoint {
|
|
id String @id @default(cuid())
|
|
name String
|
|
district String
|
|
address String?
|
|
phone String?
|
|
notes String?
|
|
createdById String
|
|
createdBy User @relation(fields: [createdById], references: [id])
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|