amati/prisma/schema.prisma
2024-02-19 23:26:30 +07:00

69 lines
1.9 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model User {
id String @id @default(cuid())
name String?
email String? @unique
emailVerified DateTime?
passwordHash String?
photoProfile String?
directPermissions Permission[] @relation("PermissionToUser")
roles Role[] @relation("RoleToUser")
linkRequests Office365LinkRequest[]
}
model Role {
id String @id @default(cuid())
code String @unique
name String
description String @default("")
isActive Boolean @default(false)
permissions Permission[] @relation("PermissionToRole")
users User[] @relation("RoleToUser")
}
model Permission {
id String @id @default(cuid())
code String @unique
name String
description String @default("")
isActive Boolean @default(false)
roles Role[] @relation("PermissionToRole")
directUsers User[] @relation("PermissionToUser")
}
enum Office365LinkRequestStatus {
WAITING
ACCEPTED
CANCELLED
REJECTED
}
model Office365LinkRequest {
id String @id @default(cuid())
creator User @relation(fields: [createdBy], references: [id])
status Office365LinkRequestStatus @default(WAITING)
requestedAt DateTime @default(now())
acceptedAt DateTime?
cancelledAt DateTime?
rejectedAt DateTime?
createdBy String
links Office365ReferralLink[]
}
model Office365ReferralLink {
id String @id @default(cuid())
request Office365LinkRequest @relation(fields: [requestId], references: [id])
email String
activePeriod String
numberOfUsers Int
link String?
requestId String
}