Prmbr/prisma/schema.prisma
2025-07-30 22:17:42 +08:00

103 lines
2.6 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.

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id String @id // 使用Supabase用户ID不再自动生成
email String @unique
username String? @unique // 允许为空,因为有些用户可能没有设置用户名
avatar String?
bio String?
language String @default("en")
versionLimit Int @default(3) // 版本数量限制,可在用户配置中设置
subscribePlan String @default("free") // 订阅计划: "free", "pro"
maxVersionLimit Int @default(3) // 基于订阅的最大版本限制
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
prompts Prompt[]
@@map("users")
}
model Prompt {
id String @id @default(cuid())
name String
content String
description String?
isPublic Boolean @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
tags PromptTag[]
versions PromptVersion[]
album PromptAlbum? @relation(fields: [albumId], references: [id])
albumId String?
tests PromptTestRun[]
@@map("prompts")
}
model PromptVersion {
id String @id @default(cuid())
version Int
content String
changelog String?
createdAt DateTime @default(now())
promptId String
prompt Prompt @relation(fields: [promptId], references: [id], onDelete: Cascade)
@@unique([promptId, version])
@@map("prompt_versions")
}
model PromptTag {
id String @id @default(cuid())
name String @unique
color String @default("#3B82F6")
prompts Prompt[]
@@map("prompt_tags")
}
model PromptAlbum {
id String @id @default(cuid())
name String
description String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
prompts Prompt[]
@@map("prompt_albums")
}
model PromptTestRun {
id String @id @default(cuid())
input String
output String?
success Boolean @default(false)
error String?
createdAt DateTime @default(now())
promptId String
prompt Prompt @relation(fields: [promptId], references: [id], onDelete: Cascade)
@@map("prompt_test_runs")
}