678 lines
22 KiB
Plaintext
678 lines
22 KiB
Plaintext
generator client {
|
||
provider = "prisma-client-js"
|
||
binaryTargets = ["windows"]
|
||
}
|
||
|
||
datasource db {
|
||
provider = "mysql"
|
||
url = env("DATABASE_URL")
|
||
}
|
||
|
||
// 管理员账号
|
||
model Admin {
|
||
id String @id // 账号ID A(RRRRRR)
|
||
name String @unique // 账号名
|
||
password String // 密码
|
||
username String // 用户名
|
||
type Int @default(1) // 账号类型 1 - 超级管理员, 2 - 管理员
|
||
status Int @default(1) // 账号状态 0 - 禁用, 1 - 可用
|
||
authz_hist_mgmt Int @default(1) // 历史管理
|
||
authz_tmpl_mgmt Int @default(1) // 模板管理
|
||
authz_mtrl_mgmt Int @default(1) // 材料管理
|
||
authz_audit_mgmt Int @default(1) // 审核管理
|
||
authz_acct_mgmt Int @default(1) // 账号管理
|
||
authz_sys_cfg Int @default(1) // 系统设置
|
||
templates PublicTemplate[]
|
||
materials PublicMaterial[]
|
||
applied_requests AuditRequest[] @relation("applied_requests")
|
||
reviewed_requests AuditRequest[] @relation("reviewed_requests")
|
||
creator_id String
|
||
creator_name String
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
deleted Int @default(0)
|
||
|
||
@@map("admin")
|
||
}
|
||
|
||
// 用户账号
|
||
model User {
|
||
id String @id // 账号ID U(RRRRRR)
|
||
name String @unique // 账户名
|
||
password String // 密码
|
||
username String // 用户名
|
||
status Int @default(1) // 账号状态 0 - 禁用, 1 - 可用
|
||
projects Project[]
|
||
templates SelfTemplate[]
|
||
materials SelfMaterial[]
|
||
pub_temp_colls PublicTemplateCollection[] // 收藏的公共模板
|
||
pub_mtrl_colls PublicMaterialCollection[] // 收藏的公共材料
|
||
pub_templates PublicTemplate[]
|
||
pub_materials PublicMaterial[]
|
||
creator_id String
|
||
creator_name String
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
deleted Int @default(0)
|
||
phone String? @unique // 手机号(手机注册用户)
|
||
|
||
@@map("user")
|
||
}
|
||
|
||
// ------
|
||
|
||
// 项目
|
||
model Project {
|
||
id String @id // 项目ID P(yMdHmSRR)
|
||
name String? // 项目名称
|
||
category String? // 项目类型
|
||
province String? // 所在省份
|
||
city String? // 所在城市
|
||
climatic_zone String? // 所在气候区
|
||
constr_area Float? // 建筑面积
|
||
usage_area Float? // 使用面积
|
||
spaces Space[] // 包含空间
|
||
status Int @default(0) // 状态 0 - 未生成预测报告, 1 - 已生成预测报告
|
||
predicted_at DateTime? // 预测报告生成时间
|
||
score Float? // 得分
|
||
grade String? // 评级
|
||
creator_id String?
|
||
creator_name String
|
||
creator User? @relation(fields: [creator_id], references: [id], onDelete: SetNull)
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
|
||
@@map("project")
|
||
}
|
||
|
||
// 项目空间
|
||
model Space {
|
||
id String @id // 空间ID S(yMdHmSRR)
|
||
project_id String // 所属项目ID
|
||
project Project @relation(fields: [project_id], references: [id], onDelete: Cascade) // 所属项目
|
||
name String? // 空间名称
|
||
category String? // 空间类型
|
||
layout Int? // 空间布局
|
||
height Float? // 空间高度
|
||
area Float? // 空间面积
|
||
volume Float? // 空间体积
|
||
env_temp Float? // 环境温度
|
||
env_hum Float? // 环境湿度
|
||
env_vent_rate Float? // 环境通风换气率
|
||
apc_lmt_std_id String? // 空气污染物浓度限值标准ID
|
||
apc_lmt_std ApcLimitStandard? @relation(fields: [apc_lmt_std_id], references: [id], onDelete: SetNull) // 空气污染物浓度限值标准
|
||
materials Material[] // 包含材料
|
||
methanal_c Float? // 甲醛浓度
|
||
tvoc_c Float? // TVOC浓度
|
||
benzene_c Float? // 苯浓度
|
||
toluene_c Float? // 甲苯浓度
|
||
p_xylene_c Float? // 二甲苯浓度
|
||
methanal_c_exceed Int? // 甲醛是否超标
|
||
tvoc_c_exceed Int? // TVOC是否超标
|
||
benzene_c_exceed Int? // 苯是否超标
|
||
toluene_c_exceed Int? // 甲苯是否超标
|
||
p_xylene_c_exceed Int? // 二甲苯是否超标
|
||
creator_id String
|
||
creator_name String
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
|
||
@@map("space")
|
||
}
|
||
|
||
// 空间材料
|
||
model Material {
|
||
id Int @id @default(autoincrement()) // 材料ID
|
||
material_id String // 所属材料ID
|
||
project_id String // 所属项目ID
|
||
space_id String // 所属空间ID
|
||
space Space @relation(fields: [space_id], references: [id], onDelete: Cascade) // 所属空间
|
||
name String? // 材料名称
|
||
category String? // 材料类型
|
||
brand String? // 材料品牌
|
||
factory String? // 材料厂家
|
||
spec String? // 材料规格
|
||
eco_level String? // 环保等级
|
||
unit String? // 用量单位 AREA - 面积, LEN - 长度
|
||
qty Float? // 用量值
|
||
methanal Float? // 甲醛
|
||
methanal_min_be Float? // 甲醛最低平衡释放量
|
||
methanal_be_area Float? // 甲醛平衡释放量范围
|
||
methanal_be_roc Float? // 甲醛平衡释放量变化率
|
||
tvoc Float? // TVOC
|
||
tvoc_min_be Float? // TVOC最低平衡释放量
|
||
tvoc_be_area Float? // TVOC平衡释放量范围
|
||
tvoc_be_roc Float? // TVOC平衡释放量变化率
|
||
benzene Float? // 苯
|
||
benzene_min_be Float? // 苯最低平衡释放量
|
||
benzene_be_area Float? // 苯平衡释放量范围
|
||
benzene_be_roc Float? // 苯平衡释放量变化率
|
||
toluene Float? // 甲苯
|
||
toluene_min_be Float? // 甲苯最低平衡释放量
|
||
toluene_be_area Float? // 甲苯平衡释放量范围
|
||
toluene_be_roc Float? // 甲苯平衡释放量变化率
|
||
p_xylene Float? // 二甲苯
|
||
p_xylene_min_be Float? // 二甲苯最低平衡释放量
|
||
p_xylene_be_area Float? // 二甲苯平衡释放量范围
|
||
p_xylene_be_roc Float? // 二甲苯平衡释放量变化率
|
||
methanal_cr Float? // 甲醛贡献率
|
||
tvoc_cr Float? // TVOC贡献率
|
||
benzene_cr Float? // 苯贡献率
|
||
toluene_cr Float? // 甲苯贡献率
|
||
p_xylene_cr Float? // 二甲苯贡献率
|
||
methanal_cr_exceed Int? // 甲醛贡献率是否超标
|
||
tvoc_cr_exceed Int? // TVOC贡献率是否超标
|
||
benzene_cr_exceed Int? // 苯贡献率是否超标
|
||
toluene_cr_exceed Int? // 甲苯贡献率是否超标
|
||
p_xylene_cr_exceed Int? // 二甲苯贡献率是否超标
|
||
is_methanal_ps Int? // 是否为甲醛污染源
|
||
is_tvoc_ps Int? // 是否为TVOC污染源
|
||
is_benzene_ps Int? // 是否为苯污染源
|
||
is_toluene_ps Int? // 是否为甲苯污染源
|
||
is_p_xylene_ps Int? // 是否为二甲苯污染源
|
||
user_id String
|
||
user_name String
|
||
creator_id String
|
||
creator_name String
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
|
||
@@map("material")
|
||
}
|
||
|
||
// ------
|
||
|
||
// 公共项目模板
|
||
model PublicTemplate {
|
||
id String @id // PT(yMdHmSRR)
|
||
name String?
|
||
category String?
|
||
province String?
|
||
city String?
|
||
climatic_zone String?
|
||
constr_area Float?
|
||
usage_area Float?
|
||
spaces PublicTemplateSpace[]
|
||
display Int @default(0) // 是否展示
|
||
collectors PublicTemplateCollection[] // 收藏此模板的用户
|
||
pry_no Int @default(0)
|
||
score Float?
|
||
grade String?
|
||
from String?
|
||
creator_id String
|
||
creator_name String
|
||
related_user_id String?
|
||
related_user User? @relation(fields: [related_user_id], references: [id], onDelete: SetNull)
|
||
related_admin_id String?
|
||
related_admin Admin? @relation(fields: [related_admin_id], references: [id], onDelete: SetNull)
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
|
||
@@map("public_template")
|
||
}
|
||
|
||
// 公共项目模板空间
|
||
model PublicTemplateSpace {
|
||
id String @id // PTS(yMdHmSRR)
|
||
project_id String
|
||
project PublicTemplate @relation(fields: [project_id], references: [id], onDelete: Cascade)
|
||
name String?
|
||
category String?
|
||
layout Int?
|
||
height Float?
|
||
area Float?
|
||
volume Float?
|
||
env_temp Float?
|
||
env_hum Float?
|
||
env_vent_rate Float?
|
||
apc_lmt_std_id String?
|
||
apc_lmt_std ApcLimitStandard? @relation(fields: [apc_lmt_std_id], references: [id], onDelete: SetNull)
|
||
materials PublicTemplateMaterial[]
|
||
methanal_c Float?
|
||
tvoc_c Float?
|
||
benzene_c Float?
|
||
toluene_c Float?
|
||
p_xylene_c Float?
|
||
methanal_c_exceed Int?
|
||
tvoc_c_exceed Int?
|
||
benzene_c_exceed Int?
|
||
toluene_c_exceed Int?
|
||
p_xylene_c_exceed Int?
|
||
creator_id String
|
||
creator_name String
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
|
||
@@map("public_template_space")
|
||
}
|
||
|
||
// 公共项目模板材料
|
||
model PublicTemplateMaterial {
|
||
id Int @id @default(autoincrement())
|
||
material_id String
|
||
project_id String
|
||
space_id String
|
||
space PublicTemplateSpace @relation(fields: [space_id], references: [id], onDelete: Cascade)
|
||
name String?
|
||
category String?
|
||
brand String?
|
||
factory String?
|
||
spec String?
|
||
eco_level String?
|
||
unit String?
|
||
qty Float?
|
||
methanal Float?
|
||
methanal_min_be Float?
|
||
methanal_be_area Float?
|
||
methanal_be_roc Float?
|
||
tvoc Float?
|
||
tvoc_min_be Float?
|
||
tvoc_be_area Float?
|
||
tvoc_be_roc Float?
|
||
benzene Float?
|
||
benzene_min_be Float?
|
||
benzene_be_area Float?
|
||
benzene_be_roc Float?
|
||
toluene Float?
|
||
toluene_min_be Float?
|
||
toluene_be_area Float?
|
||
toluene_be_roc Float?
|
||
p_xylene Float?
|
||
p_xylene_min_be Float?
|
||
p_xylene_be_area Float?
|
||
p_xylene_be_roc Float?
|
||
methanal_cr Float?
|
||
tvoc_cr Float?
|
||
benzene_cr Float?
|
||
toluene_cr Float?
|
||
p_xylene_cr Float?
|
||
methanal_cr_exceed Int?
|
||
tvoc_cr_exceed Int?
|
||
benzene_cr_exceed Int?
|
||
toluene_cr_exceed Int?
|
||
p_xylene_cr_exceed Int?
|
||
is_methanal_ps Int?
|
||
is_tvoc_ps Int?
|
||
is_benzene_ps Int?
|
||
is_toluene_ps Int?
|
||
is_p_xylene_ps Int?
|
||
user_id String
|
||
user_name String
|
||
creator_id String
|
||
creator_name String
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
|
||
@@map("public_template_material")
|
||
}
|
||
|
||
// ------
|
||
|
||
// 自建模板
|
||
model SelfTemplate {
|
||
id String // ST(yMdHmSRR)
|
||
name String?
|
||
category String?
|
||
province String?
|
||
city String?
|
||
climatic_zone String?
|
||
constr_area Float?
|
||
usage_area Float?
|
||
spaces SelfTemplateSpace[]
|
||
score Float?
|
||
grade String?
|
||
creator_id String
|
||
creator_name String
|
||
creator User @relation(fields: [creator_id], references: [id], onDelete: Cascade)
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
|
||
@@id([id, creator_id])
|
||
@@map("self_template")
|
||
}
|
||
|
||
// 自建模板空间
|
||
model SelfTemplateSpace {
|
||
id String // STS(yMdHmSRR)
|
||
project_id String
|
||
project SelfTemplate @relation(fields: [project_id, creator_id], references: [id, creator_id], onDelete: Cascade)
|
||
name String?
|
||
category String?
|
||
layout Int?
|
||
height Float?
|
||
area Float?
|
||
volume Float?
|
||
env_temp Float?
|
||
env_hum Float?
|
||
env_vent_rate Float?
|
||
apc_lmt_std_id String?
|
||
apc_lmt_std ApcLimitStandard? @relation(fields: [apc_lmt_std_id], references: [id], onDelete: SetNull)
|
||
materials SelfTemplateMaterial[]
|
||
methanal_c Float?
|
||
tvoc_c Float?
|
||
benzene_c Float?
|
||
toluene_c Float?
|
||
p_xylene_c Float?
|
||
methanal_c_exceed Int?
|
||
tvoc_c_exceed Int?
|
||
benzene_c_exceed Int?
|
||
toluene_c_exceed Int?
|
||
p_xylene_c_exceed Int?
|
||
creator_id String
|
||
creator_name String
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
|
||
@@id([id, project_id])
|
||
@@map("self_template_space")
|
||
}
|
||
|
||
// 自建项目模板材料
|
||
model SelfTemplateMaterial {
|
||
id Int @id @default(autoincrement())
|
||
material_id String
|
||
project_id String
|
||
space_id String
|
||
space SelfTemplateSpace @relation(fields: [space_id, project_id], references: [id, project_id], onDelete: Cascade)
|
||
name String?
|
||
category String?
|
||
brand String?
|
||
factory String?
|
||
spec String?
|
||
eco_level String?
|
||
unit String?
|
||
qty Float?
|
||
methanal Float?
|
||
methanal_min_be Float?
|
||
methanal_be_area Float?
|
||
methanal_be_roc Float?
|
||
tvoc Float?
|
||
tvoc_min_be Float?
|
||
tvoc_be_area Float?
|
||
tvoc_be_roc Float?
|
||
benzene Float?
|
||
benzene_min_be Float?
|
||
benzene_be_area Float?
|
||
benzene_be_roc Float?
|
||
toluene Float?
|
||
toluene_min_be Float?
|
||
toluene_be_area Float?
|
||
toluene_be_roc Float?
|
||
p_xylene Float?
|
||
p_xylene_min_be Float?
|
||
p_xylene_be_area Float?
|
||
p_xylene_be_roc Float?
|
||
methanal_cr Float?
|
||
tvoc_cr Float?
|
||
benzene_cr Float?
|
||
toluene_cr Float?
|
||
p_xylene_cr Float?
|
||
methanal_cr_exceed Int?
|
||
tvoc_cr_exceed Int?
|
||
benzene_cr_exceed Int?
|
||
toluene_cr_exceed Int?
|
||
p_xylene_cr_exceed Int?
|
||
is_methanal_ps Int?
|
||
is_tvoc_ps Int?
|
||
is_benzene_ps Int?
|
||
is_toluene_ps Int?
|
||
is_p_xylene_ps Int?
|
||
user_id String
|
||
user_name String
|
||
creator_id String
|
||
creator_name String
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
|
||
@@map("self_template_material")
|
||
}
|
||
|
||
// ------
|
||
|
||
// 公共材料
|
||
model PublicMaterial {
|
||
material_id String @id // PM(yMdHmSRR)
|
||
name String?
|
||
category String?
|
||
brand String?
|
||
factory String?
|
||
spec String?
|
||
eco_level String?
|
||
health_level String?
|
||
methanal Float?
|
||
methanal_min_be Float?
|
||
methanal_be_area Float?
|
||
methanal_be_roc Float?
|
||
tvoc Float?
|
||
tvoc_min_be Float?
|
||
tvoc_be_area Float?
|
||
tvoc_be_roc Float?
|
||
benzene Float?
|
||
benzene_min_be Float?
|
||
benzene_be_area Float?
|
||
benzene_be_roc Float?
|
||
toluene Float?
|
||
toluene_min_be Float?
|
||
toluene_be_area Float?
|
||
toluene_be_roc Float?
|
||
p_xylene Float?
|
||
p_xylene_min_be Float?
|
||
p_xylene_be_area Float?
|
||
p_xylene_be_roc Float?
|
||
sort_order Int @default(0) // 手动排序权重,升序
|
||
display Int @default(0) // 是否展示
|
||
collectors PublicMaterialCollection[] // 收藏此材料的用户
|
||
pry_no Int @default(0)
|
||
from String?
|
||
creator_id String
|
||
creator_name String
|
||
related_user_id String?
|
||
related_user User? @relation(fields: [related_user_id], references: [id], onDelete: SetNull)
|
||
related_admin_id String?
|
||
related_admin Admin? @relation(fields: [related_admin_id], references: [id], onDelete: SetNull)
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
|
||
@@map("public_material")
|
||
}
|
||
|
||
// 自建材料
|
||
model SelfMaterial {
|
||
material_id String // SM(yMdHmSRR)
|
||
name String?
|
||
category String?
|
||
brand String?
|
||
factory String?
|
||
spec String?
|
||
eco_level String?
|
||
health_level String?
|
||
methanal Float?
|
||
methanal_min_be Float?
|
||
methanal_be_area Float?
|
||
methanal_be_roc Float?
|
||
tvoc Float?
|
||
tvoc_min_be Float?
|
||
tvoc_be_area Float?
|
||
tvoc_be_roc Float?
|
||
benzene Float?
|
||
benzene_min_be Float?
|
||
benzene_be_area Float?
|
||
benzene_be_roc Float?
|
||
toluene Float?
|
||
toluene_min_be Float?
|
||
toluene_be_area Float?
|
||
toluene_be_roc Float?
|
||
p_xylene Float?
|
||
p_xylene_min_be Float?
|
||
p_xylene_be_area Float?
|
||
p_xylene_be_roc Float?
|
||
sort_order Int @default(0)
|
||
creator_id String
|
||
creator_name String
|
||
creator User @relation(fields: [creator_id], references: [id], onDelete: Cascade)
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
|
||
@@id([material_id, creator_id])
|
||
@@map("self_material")
|
||
}
|
||
|
||
// ------
|
||
|
||
// 用户收藏的公共模板
|
||
model PublicTemplateCollection {
|
||
user_id String
|
||
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
|
||
project_id String
|
||
project PublicTemplate @relation(fields: [project_id], references: [id], onDelete: Cascade)
|
||
|
||
@@id([user_id, project_id])
|
||
@@map("public_template_collection")
|
||
}
|
||
|
||
// 用户收藏的公共材料
|
||
model PublicMaterialCollection {
|
||
user_id String
|
||
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
|
||
material_id String
|
||
material PublicMaterial @relation(fields: [material_id], references: [material_id], onDelete: Cascade)
|
||
|
||
@@id([user_id, material_id])
|
||
@@map("public_material_collection")
|
||
}
|
||
|
||
// ------
|
||
|
||
// 审核单
|
||
model AuditRequest {
|
||
id String @id
|
||
status Int @default(0)
|
||
source_id String?
|
||
source_creator_id String?
|
||
source String
|
||
type String
|
||
desc String?
|
||
remark String?
|
||
reason String?
|
||
details AuditRequestDetails[]
|
||
auditor_id String?
|
||
auditor_name String?
|
||
auditor Admin? @relation(name: "reviewed_requests", fields: [auditor_id], references: [id], onDelete: SetNull)
|
||
audited_at DateTime?
|
||
creator_id String?
|
||
creator_name String
|
||
creator Admin? @relation(name: "applied_requests", fields: [creator_id], references: [id], onDelete: SetNull)
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
|
||
@@map("audit_request")
|
||
}
|
||
|
||
// 审核单详情
|
||
model AuditRequestDetails {
|
||
id Int @id @default(autoincrement())
|
||
aduit_request_id String
|
||
audit_request AuditRequest @relation(fields: [aduit_request_id], references: [id], onDelete: Cascade)
|
||
content Json
|
||
|
||
@@map("audit_request_details")
|
||
}
|
||
|
||
// ------
|
||
|
||
// 项目-空间类型
|
||
model ProjectSpaceCategory {
|
||
pry_no_1 Int @default(0)
|
||
pry_no_2 Int @default(0)
|
||
project_category String
|
||
space_category String
|
||
|
||
@@id([project_category, space_category])
|
||
@@map("project_space_category")
|
||
}
|
||
|
||
// 材料类型
|
||
model MaterialCategory {
|
||
pry_no_1 Int @default(0)
|
||
pry_no_2 Int @default(0)
|
||
first_category String
|
||
second_category String
|
||
unit String?
|
||
|
||
@@id([first_category, second_category])
|
||
@@map("material_category")
|
||
}
|
||
|
||
// 省-市-气候区-温度-湿度
|
||
model CityInformation {
|
||
pry_no_1 Int @default(0)
|
||
pry_no_2 Int @default(0)
|
||
province String
|
||
city String
|
||
climatic_zone String?
|
||
env_temp Float
|
||
env_hum Float
|
||
|
||
@@id([province, city])
|
||
@@map("city_information")
|
||
}
|
||
|
||
// 空气污染物浓度限值标准
|
||
model ApcLimitStandard {
|
||
id String @id // 标准ID
|
||
methanal_c_lmt Float // 甲醛浓度限值
|
||
tvoc_c_lmt Float // TVOC浓度限值
|
||
benzene_c_lmt Float // 苯浓度限值
|
||
toluene_c_lmt Float // 甲苯浓度限值
|
||
p_xylene_c_lmt Float // 二甲苯浓度限值
|
||
spaces Space[] // 使用该模板的项目空间
|
||
pub_temp_spaces PublicTemplateSpace[] // 使用该标准的公共模板空间
|
||
self_temp_spaces SelfTemplateSpace[] // 使用该标准的自建模板空间
|
||
|
||
@@map("apc_limit_standard")
|
||
}
|
||
|
||
// ------ 论坛 ------
|
||
|
||
model ForumThread {
|
||
id Int @id @default(autoincrement())
|
||
board String // 板块(取值属于 FORUM_BOARDS)
|
||
title String
|
||
content String @db.Text
|
||
author_id String // User.id
|
||
author_name String // 冗余 username
|
||
like_count Int @default(0)
|
||
reply_count Int @default(0)
|
||
created_at DateTime @default(now())
|
||
updated_at DateTime @updatedAt
|
||
deleted Int @default(0)
|
||
replies ForumReply[]
|
||
likes ForumThreadLike[]
|
||
|
||
@@map("forum_thread")
|
||
}
|
||
|
||
model ForumReply {
|
||
id Int @id @default(autoincrement())
|
||
thread_id Int
|
||
thread ForumThread @relation(fields: [thread_id], references: [id], onDelete: Cascade)
|
||
floor Int // 楼层
|
||
content String @db.Text
|
||
author_id String
|
||
author_name String
|
||
created_at DateTime @default(now())
|
||
deleted Int @default(0)
|
||
|
||
@@map("forum_reply")
|
||
}
|
||
|
||
model ForumThreadLike {
|
||
thread_id Int
|
||
thread ForumThread @relation(fields: [thread_id], references: [id], onDelete: Cascade)
|
||
user_id String
|
||
created_at DateTime @default(now())
|
||
|
||
@@id([thread_id, user_id])
|
||
@@map("forum_thread_like")
|
||
}
|