This commit is contained in:
Rao 2025-04-21 15:52:47 +08:00
parent 758678b729
commit 5954b95742
1 changed files with 0 additions and 321 deletions

View File

@ -123,156 +123,7 @@ model AppConfig {
@@map("app_config")
}
model Post {
// 字符串类型字段
id String @id @default(cuid()) // 帖子唯一标识,使用 cuid() 生成默认值
type String? // Post类型课程、章节、小节、讨论都用Post实现
level String?
state String?
title String? // 帖子标题,可为空
subTitle String?
content String? // 帖子内容,可为空
important Boolean? //是否重要/精选/突出
domainId String? @map("domain_id")
terms Term[] @relation("post_term")
order Float? @default(0) @map("order")
duration Int?
rating Int? @default(0)
students Staff[] @relation("post_student")
depts Department[] @relation("post_dept")
views Int @default(0) @map("views")
hates Int @default(0) @map("hates")
likes Int @default(0) @map("likes")
// 索引
// 日期时间类型字段
createdAt DateTime @default(now()) @map("created_at")
publishedAt DateTime? @map("published_at") // 发布时间
updatedAt DateTime @map("updated_at")
deletedAt DateTime? @map("deleted_at") // 删除时间,可为空
instructors PostInstructor[]
// 关系类型字段
authorId String? @map("author_id")
author Staff? @relation(fields: [authorId], references: [id]) // 帖子作者,关联 Staff 模型
enrollments Enrollment[] // 学生报名记录
visits Visit[] // 访问记录,关联 Visit 模型
parentId String? @map("parent_id")
parent Post? @relation("PostChildren", fields: [parentId], references: [id]) // 父级帖子,关联 Post 模型
children Post[] @relation("PostChildren") // 子级帖子列表,关联 Post 模型
hasChildren Boolean? @default(false) @map("has_children")
// 闭包表关系
ancestors PostAncestry[] @relation("DescendantPosts")
descendants PostAncestry[] @relation("AncestorPosts")
resources Resource[] // 附件列表
meta Json? // 封面url 视频url objectives具体的学习目标 rating评分Int
// 索引
@@index([type, domainId])
@@index([authorId, type])
@@index([parentId, type])
@@index([parentId, order])
@@index([createdAt])
@@index([updatedAt])
@@index([type, publishedAt])
@@index([state])
@@index([level])
@@index([views])
@@index([important])
@@map("post")
}
model PostAncestry {
id String @id @default(cuid())
ancestorId String? @map("ancestor_id")
descendantId String @map("descendant_id")
relDepth Int @map("rel_depth")
ancestor Post? @relation("AncestorPosts", fields: [ancestorId], references: [id])
descendant Post @relation("DescendantPosts", fields: [descendantId], references: [id])
// 复合索引优化
// 索引建议
@@index([ancestorId]) // 针对祖先的查询
@@index([descendantId]) // 针对后代的查询
@@index([ancestorId, descendantId]) // 组合索引,用于查询特定的祖先-后代关系
@@index([relDepth]) // 根据关系深度的查询
@@map("post_ancestry")
}
model Message {
id String @id @default(cuid())
url String?
intent String?
option Json?
senderId String? @map("sender_id")
type String?
sender Staff? @relation(name: "message_sender", fields: [senderId], references: [id])
title String?
content String?
receivers Staff[] @relation("message_receiver")
visits Visit[]
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime? @updatedAt @map("updated_at")
@@index([type, createdAt])
@@map("message")
}
model Visit {
id String @id @default(cuid()) @map("id")
type String?
views Int @default(1) @map("views")
// sourceIP String? @map("source_ip")
// 关联关系
visitorId String? @map("visitor_id")
visitor Staff? @relation(fields: [visitorId], references: [id])
postId String? @map("post_id")
post Post? @relation(fields: [postId], references: [id])
message Message? @relation(fields: [messageId], references: [id])
messageId String? @map("message_id")
lectureId String? @map("lecture_id") // 课时ID
createdAt DateTime @default(now()) @map("created_at") // 创建时间
updatedAt DateTime @updatedAt @map("updated_at") // 更新时间
deletedAt DateTime? @map("deleted_at") // 删除时间,可为空
meta Json?
@@index([postId, type, visitorId])
@@index([messageId, type, visitorId])
@@map("visit")
}
model Enrollment {
id String @id @default(cuid()) @map("id")
status String @map("status")
completionRate Float @default(0) @map("completion_rate")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
completedAt DateTime? @map("completed_at")
// 关联关系
student Staff @relation(fields: [studentId], references: [id])
studentId String @map("student_id")
post Post @relation(fields: [postId], references: [id])
postId String @map("post_id")
@@unique([studentId, postId])
@@index([status])
@@index([completedAt])
@@map("enrollment")
}
model PostInstructor {
postId String @map("post_id")
instructorId String @map("instructor_id")
role String @map("role")
createdAt DateTime @default(now()) @map("created_at")
order Float? @default(0) @map("order")
post Post @relation(fields: [postId], references: [id])
instructor Staff @relation(fields: [instructorId], references: [id])
@@id([postId, instructorId])
@@map("post_instructor")
}
model Resource {
id String @id @default(cuid()) @map("id")
@ -302,104 +153,6 @@ model Resource {
@@map("resource")
}
model Node {
id String @id @default(cuid()) @map("id")
title String @map("title")
description String? @map("description")
type String @map("type")
style Json? @map("style")
position Json? @map("position")
data Json? @map("data")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
// 关联关系
sourceEdges NodeEdge[] @relation("source_node")
targetEdges NodeEdge[] @relation("target_node")
@@map("node")
}
model NodeEdge {
id String @id @default(cuid()) @map("id")
type String? @map("type")
label String? @map("label")
description String? @map("description")
style Json? @map("style")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
source Node @relation("source_node", fields: [sourceId], references: [id], onDelete: Cascade)
sourceId String @map("source_id")
target Node @relation("target_node", fields: [targetId], references: [id], onDelete: Cascade)
targetId String @map("target_id")
@@unique([sourceId, targetId, type])
@@index([sourceId])
@@index([targetId])
@@map("node_edge")
}
model TrainContent {
id String @id @default(cuid())
title String @map("title")
trainSituations TrainSituation[]
trainPlans TrainPlan[] @relation("TrainPlanContent")
sportProjectId String? @unique @map("sport_project_id") // 新增字段,用于关联 SportProject
sportProject SportProject? @relation("TrainContentSportProject") // 可选的一对一关系
type String @map("type")
parentId String? @map("parent_id")
parent TrainContent? @relation("ContentParent", fields: [parentId], references: [id]) // 指向自身
children TrainContent[] @relation("ContentParent") // 指向自身
deletedAt DateTime? @map("deleted_at")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@map("train_content")
}
model TrainSituation {
id String @id @default(cuid())
staffId String @map("staff_id")
staff Staff @relation(fields: [staffId], references: [id])
trainContentId String @map("train_content_id")
trainContent TrainContent @relation(fields: [trainContentId], references: [id])
groupId String? @map("group_id")
score Float @default(0.0) @map("score")
value String? @map("value")
mustTrainTime Float @map("must_train_time")
alreadyTrainTime Float @map("already_train_time")
dailyTrainTime DailyTrainTime[] @relation("DailyTrainSituation")
deletedAt DateTime? @map("deleted_at")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@map("train_situation")
}
model DailyTrainTime {
id String @id @default(cuid())
trainSituationId String @map("train_situatio_id")
trainSituation TrainSituation @relation("DailyTrainSituation", fields: [trainSituationId], references: [id])
trainTime Float @default(0.0) @map("trainTime")
createdAt DateTime @default(now()) @map("created_at")
@@map("daily_train_situation")
}
model Position {
id String @id @default(cuid()) @map("id")
type String @map("type")
categorize String @map("categorize")
staff Staff[] @relation("StaffPosition")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@map("position")
}
model Department {
id String @id @default(cuid())
@ -482,80 +235,6 @@ model Staff {
@@map("staff")
}
model TrainPlan {
id String @id @default(cuid())
trainDate DateTime @map("train_date")
trainTime DateTime @map("train_time")
trainType String @map("train_type")
trainContext String @map("train_context")
trainContents TrainContent[] @relation("TrainPlanContent")
departmentId String? @map("department_id")
department Department? @relation("TrainPlanDept", fields: [departmentId], references: [id])
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
@@map("train_plan")
}
model SportProject {
id String @id @default(cuid())
name String @map("name") // 项目名称
type String @map("type") // 项目类型
description String? @map("description") // 项目描述
unit String @map("unit") // 成绩单位(如:秒、米、个)
isAscending Boolean @map("is_ascending") // 是否为升序计分
trainContentId String? @unique @map("train_content_id") // 新增字段,用于关联 TrainContent
trainContent TrainContent? @relation("TrainContentSportProject", fields: [trainContentId], references: [id]) // 可选的一对一关系
standards SportStandard[]
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
@@map("sport_project")
}
model SportStandard {
id String @id @default(cuid())
projectId String @map("project_id")
project SportProject @relation(fields: [projectId], references: [id])
gender Boolean @map("gender") // true为男false为女
personType String @map("person_type") // 人员类型
ageRanges Json @map("age_ranges") // 年龄段定义
scoreTable Json @map("score_table") // 评分标准表
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
@@unique([projectId, gender, personType], name: "projectId_gender_personType")
@@map("sport_standard")
}
model Plan {