Files
upage-git/prisma/schema.prisma
2025-09-25 15:24:13 +08:00

226 lines
5.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = "file:../data/upage.db"
}
// 聊天使用记录,每个 message 对应多条。
model ChatUsage {
id String @id @default(uuid())
// 用户 ID
userId String
// 聊天的 id
chatId String
// 消息的 id
messageId String
// 输入令牌数
inputTokens Int @default(0)
// 输出令牌数
outputTokens Int @default(0)
// 缓存令牌数
cachedTokens Int @default(0)
// 推理令牌数
reasoningTokens Int @default(0)
// 总令牌数
totalTokens Int @default(0)
// 调用时间
calledAt DateTime @default(now())
// 调用状态
status String
// 使用的模型名称
modelName String?
// 提示文本
prompt String?
// 包含额外调用信息的元数据
metadata Json? /// @type {Object}
// 创建时间
createdAt DateTime @default(now())
// 更新时间
updatedAt DateTime @updatedAt
@@index([userId])
@@index([messageId])
@@index([chatId])
@@index([calledAt])
@@index([status])
}
// 聊天,一个聊天会包含多个消息。
model Chat {
id String @id @default(uuid())
// URL 标识符
urlId String? @unique
// 用户 ID
userId String
// 聊天描述
description String?
// 时间戳
timestamp DateTime @default(now())
// 版本,每次更新时,版本号加 1
version Int @default(1)
// 包含额外信息的元数据
metadata Json? /// @type {{gitUrl?: string, gitBranch?: string, netlifySiteId?: string}}
// 创建时间
createdAt DateTime @default(now())
// 更新时间
updatedAt DateTime @updatedAt
// 关联的消息
messages Message[] @relation("ChatToMessages")
// 关联的部署记录
deployments Deployment[]
@@index([userId])
@@index([urlId])
}
// 聊天消息,消息是需要有序的。 @ai-sdk/ui-utils 的 Message 类型。
model Message {
id String @id @default(uuid())
// 消息所属聊天
chatId String
// 消息所属用户
userId String
// 'user' 或 'assistant'
role String
// 消息内容
content String
// 版本 ID
revisionId String?
// 注释
annotations Json? /// @type {Array<{id: string, text: string, start: number, end: number}>}
// 是否为遗弃消息
isDiscarded Boolean @default(false)
// 消息的元数据
metadata Json? /// @type {Record<string, any>}
// 消息的部分内容,用于存储 UIMessage 的 parts
parts Json? /// @type {Array<{type: string, text?: string, [key: string]: any}>}
version Int @default(1)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
chat Chat @relation("ChatToMessages", fields: [chatId], references: [id], onDelete: Cascade)
// 关联的页面
page Page? @relation("MessageToPage")
// 关联的部分
sections Section[] @relation("MessageToSections")
@@index([chatId])
@@index([userId])
}
model Page {
id String @id @default(uuid())
// 关联的消息 ID
messageId String @unique
// 页面数据 (JSON 数组格式)
pages Json /// @type {Array<Object>} 自定义编辑器的页面数据结构数组,每个元素代表一个页面
// 创建时间
createdAt DateTime @default(now())
// 更新时间
updatedAt DateTime @updatedAt
// 关联的消息
message Message @relation("MessageToPage", fields: [messageId], references: [id], onDelete: Cascade)
@@index([messageId])
}
model Section {
id String @id @default(uuid())
// 所属消息 ID
messageId String
// 部分类型,通常为 "section"
type String @default("section")
// 操作类型add, update, remove 等
action String @default("add")
// 操作的 ID
actionId String
// 页面名称
pageName String @default("")
// Section 内容 (HTML/CSS)
content String
// DOM ID
domId String
// 根 DOM ID用于标识父级容器
rootDomId String?
// 排序顺序
sort Int @default(0)
// 创建时间
createdAt DateTime @default(now())
// 更新时间
updatedAt DateTime @updatedAt
// 关联的消息
message Message @relation("MessageToSections", fields: [messageId], references: [id], onDelete: Cascade)
@@index([messageId])
@@index([domId])
@@index([rootDomId])
}
// 部署记录表,记录用户将代码部署到各平台的信息
model Deployment {
id String @id @default(uuid())
// 用户 ID
userId String
// 聊天 ID
chatId String
// 部署平台1Panel、Netlify、Vercel 等)
platform String
// 平台上的部署 ID
deploymentId String
// 部署后的访问链接
url String
// 部署状态
status String
// 包含平台特定信息的元数据
metadata Json? /// @type {Object}
// 创建时间
createdAt DateTime @default(now())
// 更新时间
updatedAt DateTime @updatedAt
// 关联的聊天
chat Chat? @relation(fields: [chatId], references: [id], onDelete: Cascade)
@@index([userId])
@@index([chatId])
@@index([platform])
@@index([status])
@@index([createdAt])
}
// 用户设置表,用于保存用户的各种设置
model UserSetting {
id String @id @default(uuid())
// 用户 ID
userId String
// 设置类别profile、connectivity、services 等)
category String
// 设置键名
key String
// 设置值
value String
// 是否为敏感信息(如 API 密钥)
isSecret Boolean @default(false)
// 创建时间
createdAt DateTime @default(now())
// 更新时间
updatedAt DateTime @updatedAt
@@unique([userId, category, key])
@@index([userId])
@@index([category])
@@index([key])
@@index([isSecret])
}