🎉 first commit

This commit is contained in:
LIlGG
2025-09-24 13:06:25 +08:00
commit 1f4fb103e9
409 changed files with 61222 additions and 0 deletions

225
prisma/schema.prisma Normal file
View File

@@ -0,0 +1,225 @@
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
// 聊天使用记录,每个 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 @db.Text
// 版本 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 @db.Text
// 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 @db.Text
// 是否为敏感信息(如 API 密钥)
isSecret Boolean @default(false)
// 创建时间
createdAt DateTime @default(now())
// 更新时间
updatedAt DateTime @updatedAt
@@unique([userId, category, key])
@@index([userId])
@@index([category])
@@index([key])
@@index([isSecret])
}