Q58Connect/prisma/schema.prisma

109 lines
2.1 KiB
Plaintext

generator client {
provider = "prisma-client-js"
previewFeatures = ["postgresqlExtensions"]
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DATABASE_URL_UNPOOLED")
}
enum UserRole {
ADMIN
USER
}
model User {
id String @id @default(cuid())
username String @unique
email String @unique
name String?
avatarUrl String?
role UserRole @default(USER)
moderator Boolean @default(false)
groups String[]
clients Client[]
codes Code[]
accessTokens AccessToken[]
authorizations Authorization[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@map("users")
}
model Client {
id String @id @default(cuid())
name String
redirectUri String
home String
logo String
description String?
clientId String @unique
clientSecret String
userId String
user User @relation(fields: [userId], references: [id])
authCodes Code[]
accessTokens AccessToken[]
authorizations Authorization[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@map("clients")
}
model Code {
id String @id @default(cuid())
code String @unique
expiresAt DateTime
deletedAt DateTime?
userId String
user User @relation(fields: [userId], references: [id])
clientId String
client Client @relation(fields: [clientId], references: [id])
@@map("codes")
}
model AccessToken {
id String @id @default(cuid())
token String @unique
expiresAt DateTime
userId String
user User @relation(fields: [userId], references: [id])
clientId String
client Client @relation(fields: [clientId], references: [id])
@@map("access_tokens")
}
model Authorization {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
userId String
user User @relation(fields: [userId], references: [id])
clientId String
client Client @relation(fields: [clientId], references: [id])
scope String?
@@unique([userId, clientId])
@@map("authorizations")
}