52 lines
1.3 KiB
Plaintext
52 lines
1.3 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
binaryTargets = ["native", "linux-musl-arm64-openssl-3.0.x"]
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model User {
|
|
id Int @id @default(autoincrement())
|
|
username String @unique
|
|
password String
|
|
role String @default("USER") // ADMIN, USER
|
|
plates Plate[]
|
|
people Person[]
|
|
}
|
|
|
|
model Person {
|
|
id Int @id @default(autoincrement())
|
|
rut String @unique
|
|
name String
|
|
status String @default("PENDING") // PENDING, APPROVED, DENIED
|
|
startDate DateTime
|
|
endDate DateTime
|
|
createdAt DateTime @default(now())
|
|
addedBy User? @relation(fields: [addedById], references: [id])
|
|
addedById Int?
|
|
}
|
|
|
|
model Plate {
|
|
id Int @id @default(autoincrement())
|
|
number String @unique
|
|
owner String?
|
|
status String @default("PENDING") // PENDING, ALLOWED, DENIED
|
|
createdAt DateTime @default(now())
|
|
addedBy User? @relation(fields: [addedById], references: [id])
|
|
addedById Int?
|
|
}
|
|
|
|
model AccessLog {
|
|
id Int @id @default(autoincrement())
|
|
plateNumber String
|
|
accessStatus String // GRANTED, DENIED, UNKNOWN
|
|
timestamp DateTime @default(now())
|
|
|
|
@@index([plateNumber])
|
|
@@index([timestamp])
|
|
@@index([plateNumber, timestamp])
|
|
}
|