mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-10-01 15:46:39 +08:00
155 lines
6.4 KiB
Plaintext
155 lines
6.4 KiB
Plaintext
// This is your Prisma schema file,
|
||
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
||
|
||
// datasource db {
|
||
// provider = "postgresql"
|
||
// url = env("POSTGRES_PRISMA_URL") // uses connection pooling
|
||
// // directUrl = env("POSTGRES_URL_NON_POOLING") // uses a direct connection
|
||
// }
|
||
datasource db {
|
||
provider = "mysql"
|
||
url = env("DATABASE_URL") // uses connection pooling
|
||
// directUrl = env("POSTGRES_URL_NON_POOLING") // uses a direct connection
|
||
}
|
||
|
||
generator client {
|
||
provider = "prisma-client-js"
|
||
binaryTargets = ["native", "linux-musl-openssl-3.0.x", "linux-musl-arm64-openssl-3.0.x"]
|
||
}
|
||
|
||
model User {
|
||
id String @id @default(cuid())
|
||
name String?
|
||
// if you are using Github OAuth, you can get rid of the username attribute (that is for Twitter OAuth)
|
||
username String? @unique
|
||
gh_username String? @unique
|
||
email String? @unique
|
||
emailVerified DateTime?
|
||
image String?
|
||
password String?
|
||
// 默认每人每天限额20k,但数据库存储0
|
||
everyLimitToken Int? @default(0)
|
||
createdAt DateTime @default(now())
|
||
updatedAt DateTime @updatedAt
|
||
allowToLogin Boolean @default(false)
|
||
isAdmin Boolean? @default(false)
|
||
accounts Account[]
|
||
sessions Session[]
|
||
logs LogEntry[]
|
||
}
|
||
|
||
model Account {
|
||
id String @id @default(cuid())
|
||
userId String
|
||
type String
|
||
provider String
|
||
providerAccountId String
|
||
refresh_token String?
|
||
refresh_token_expires_in Int?
|
||
access_token String? @db.VarChar(512)
|
||
expires_at Int?
|
||
token_type String?
|
||
scope String?
|
||
id_token String? @db.Text
|
||
session_state String?
|
||
oauth_token_secret String?
|
||
oauth_token String?
|
||
|
||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||
|
||
@@unique([provider, providerAccountId])
|
||
@@index([userId])
|
||
}
|
||
|
||
model Session {
|
||
id String @id @default(cuid())
|
||
sessionToken String @unique
|
||
userId String
|
||
expires DateTime
|
||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||
|
||
@@index([userId])
|
||
}
|
||
|
||
model LogEntry {
|
||
id Int @id @default(autoincrement())
|
||
ip String? @db.VarChar(50) // IPV6 long 39
|
||
path String? @db.Text
|
||
model String? @db.VarChar(50)
|
||
userName String? @db.VarChar(50)
|
||
userID String?
|
||
createdAt DateTime @default(now())
|
||
// logEntry String? @db.Text
|
||
logToken Int? @default(0)
|
||
user User? @relation(fields: [userID], references: [id], onDelete: SetNull)
|
||
}
|
||
|
||
model VerificationToken {
|
||
identifier String
|
||
token String @unique
|
||
expires DateTime
|
||
|
||
@@unique([identifier, token])
|
||
}
|
||
|
||
// model Post {
|
||
// id String @id @default(cuid())
|
||
// title String? @db.Text
|
||
// description String? @db.Text
|
||
// content String? @db.Text
|
||
// slug String @default(cuid())
|
||
// image String? @default("https://public.blob.vercel-storage.com/eEZHAoPTOBSYGBE3/hxfcV5V-eInX3jbVUhjAt1suB7zB88uGd1j20b.png") @db.Text
|
||
// imageBlurhash String? @default("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAhCAYAAACbffiEAAAACXBIWXMAABYlAAAWJQFJUiTwAAABfUlEQVR4nN3XyZLDIAwE0Pz/v3q3r55JDlSBplsIEI49h76k4opexCK/juP4eXjOT149f2Tf9ySPgcjCc7kdpBTgDPKByKK2bTPFEdMO0RDrusJ0wLRBGCIuelmWJAjkgPGDSIQEMBDCfA2CEPM80+Qwl0JkNxBimiaYGOTUlXYI60YoehzHJDEm7kxjV3whOQTD3AaCuhGKHoYhyb+CBMwjIAFz647kTqyapdV4enGINuDJMSScPmijSwjCaHeLcT77C7EC0C1ugaCTi2HYfAZANgj6Z9A8xY5eiYghDMNQBJNCWhASot0jGsSCUiHWZcSGQjaWWCDaGMOWnsCcn2QhVkRuxqqNxMSdUSElCDbp1hbNOsa6Ugxh7xXauF4DyM1m5BLtCylBXgaxvPXVwEoOBjeIFVODtW74oj1yBQah3E8tyz3SkpolKS9Geo9YMD1QJR1Go4oJkgO1pgbNZq0AOUPChyjvh7vlXaQa+X1UXwKxgHokB2XPxbX+AnijwIU4ahazAAAAAElFTkSuQmCC") @db.Text
|
||
// createdAt DateTime @default(now())
|
||
// updatedAt DateTime @updatedAt
|
||
// published Boolean @default(false)
|
||
// site Site? @relation(fields: [siteId], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
||
// siteId String?
|
||
// user User? @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
||
// userId String?
|
||
//
|
||
// @@unique([slug, siteId])
|
||
// @@index([siteId])
|
||
// @@index([userId])
|
||
// }
|
||
|
||
// model Site {
|
||
// id String @id @default(cuid())
|
||
// name String?
|
||
// description String? @db.Text
|
||
// logo String? @default("https://public.blob.vercel-storage.com/eEZHAoPTOBSYGBE3/JRajRyC-PhBHEinQkupt02jqfKacBVHLWJq7Iy.png") @db.Text
|
||
// font String @default("font-cal")
|
||
// image String? @default("https://public.blob.vercel-storage.com/eEZHAoPTOBSYGBE3/hxfcV5V-eInX3jbVUhjAt1suB7zB88uGd1j20b.png") @db.Text
|
||
// imageBlurhash String? @default("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAhCAYAAACbffiEAAAACXBIWXMAABYlAAAWJQFJUiTwAAABfUlEQVR4nN3XyZLDIAwE0Pz/v3q3r55JDlSBplsIEI49h76k4opexCK/juP4eXjOT149f2Tf9ySPgcjCc7kdpBTgDPKByKK2bTPFEdMO0RDrusJ0wLRBGCIuelmWJAjkgPGDSIQEMBDCfA2CEPM80+Qwl0JkNxBimiaYGOTUlXYI60YoehzHJDEm7kxjV3whOQTD3AaCuhGKHoYhyb+CBMwjIAFz647kTqyapdV4enGINuDJMSScPmijSwjCaHeLcT77C7EC0C1ugaCTi2HYfAZANgj6Z9A8xY5eiYghDMNQBJNCWhASot0jGsSCUiHWZcSGQjaWWCDaGMOWnsCcn2QhVkRuxqqNxMSdUSElCDbp1hbNOsa6Ugxh7xXauF4DyM1m5BLtCylBXgaxvPXVwEoOBjeIFVODtW74oj1yBQah3E8tyz3SkpolKS9Geo9YMD1QJR1Go4oJkgO1pgbNZq0AOUPChyjvh7vlXaQa+X1UXwKxgHokB2XPxbX+AnijwIU4ahazAAAAAElFTkSuQmCC") @db.Text
|
||
// subdomain String? @unique
|
||
// customDomain String? @unique
|
||
// message404 String? @default("Blimey! You've found a page that doesn't exist.") @db.Text
|
||
// createdAt DateTime @default(now())
|
||
// updatedAt DateTime @updatedAt
|
||
// user User? @relation(fields: [userId], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
||
// userId String?
|
||
// posts Post[]
|
||
//
|
||
// @@index([userId])
|
||
// }
|
||
|
||
// model Example {
|
||
// id Int @id @default(autoincrement())
|
||
// name String?
|
||
// description String? @db.Text
|
||
// domainCount Int?
|
||
// url String?
|
||
// image String? @db.Text
|
||
// imageBlurhash String? @db.Text
|
||
// }
|
||
|
||
model Setting {
|
||
key String @id
|
||
value String
|
||
type String
|
||
createdAt DateTime @default(now()) @map("created_at")
|
||
updatedAt DateTime @default(now()) @updatedAt @map("updated_at")
|
||
|
||
@@map("settings")
|
||
}
|