1
1
mirror of https://github.com/ZeroCatDev/ClassworksKV.git synced 2026-03-05 05:03:10 +00:00
ClassworksKV/prisma/schema.prisma

92 lines
3.0 KiB
Plaintext

generator client {
provider = "prisma-client"
output = "../generated/prisma"
}
datasource db {
provider = "postgresql"
relationMode = "prisma"
}
model Account {
id String @id @db.VarChar(191) @default(cuid())
provider String @db.VarChar(191)
providerId String @db.VarChar(191)
email String? @db.VarChar(191)
name String? @db.VarChar(191)
avatarUrl String? @db.VarChar(191)
providerData Json? @db.Json
accessToken String?
createdAt DateTime @default(now()) @db.Timestamptz(6)
updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)
refreshToken String?
refreshTokenExpiry DateTime? @db.Timestamptz(6)
tokenVersion Int @default(1)
devices Device[]
@@unique([provider, providerId])
}
model AppInstall {
id String @id @default(cuid()) @db.VarChar(191)
deviceId Int
appId String @db.VarChar(191)
token String @unique @db.VarChar(191)
note String? @db.VarChar(191)
installedAt DateTime @default(now()) @db.Timestamptz(6)
updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)
deviceType String? @db.VarChar(191)
isReadOnly Boolean @default(false)
device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade)
@@index([deviceId])
}
model AutoAuth {
id String @id @default(cuid()) @db.VarChar(191)
deviceId Int
password String? @db.VarChar(191)
deviceType String? @db.VarChar(191)
isReadOnly Boolean @default(false)
createdAt DateTime @default(now()) @db.Timestamptz(6)
updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)
device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade)
@@unique([deviceId, password])
}
model Device {
id Int @id @default(autoincrement())
uuid String @unique @db.VarChar(191)
name String? @db.VarChar(191)
accountId String? @db.VarChar(191)
createdAt DateTime @default(now()) @db.Timestamptz(6)
updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)
password String? @db.VarChar(191)
passwordHint String? @db.VarChar(191)
namespace String? @unique @db.VarChar(191)
// 关联关系
account Account? @relation(fields: [accountId], references: [id], onDelete: SetNull)
appInstalls AppInstall[]
kvStore KVStore[] // 设备相关的KV存储
autoAuths AutoAuth[] // 自动授权配置
@@index([accountId])
}
model KVStore {
deviceId Int
key String @db.VarChar(191)
value Json @db.Json
creatorIp String? @default("") @db.VarChar(191)
createdAt DateTime @default(now()) @db.Timestamptz(6)
updatedAt DateTime @default(now()) @updatedAt @db.Timestamptz(6)
device Device @relation(fields: [deviceId], references: [id], onDelete: Cascade)
@@id([deviceId, key])
}