training_data/packages/common/prisma/schema.prisma

162 lines
5.0 KiB
Plaintext
Executable File
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
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Taxonomy {
id String @id @default(uuid())
name String @unique
deletedAt DateTime?
terms Term[]
order Int
@@index([order, deletedAt])
}
model Relation {
id String @id @default(uuid())
aId String
bId String
aType String
bType String
relationType String
createdAt DateTime? @default(now())
@@unique([aId, bId, aType, bType, relationType])
@@map("relations")
}
model Term {
id String @id @default(uuid())
name String
taxonomy Taxonomy? @relation(fields: [taxonomyId], references: [id])
taxonomyId String?
order Int
description String?
parentId String?
parent Term? @relation("ChildParent", fields: [parentId], references: [id], onDelete: Cascade)
children Term[] @relation("ChildParent")
ancestors TermAncestry[] @relation("DescendantToAncestor")
descendants TermAncestry[] @relation("AncestorToDescendant")
domainId String?
domain Department? @relation("TermDom", fields: [domainId], references: [id])
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
createdBy String
createdStaff Staff? @relation(fields: [staffId], references: [id])
staffId String?
@@index([name]) // 对name字段建立索引以加快基于name的查找速度
@@index([parentId]) // 对parentId字段建立索引以加快基于parentId的查找速度
@@map("terms")
}
model TermAncestry {
id String @id @default(uuid())
ancestorId String
descendantId String
relDepth Int
ancestor Term @relation("AncestorToDescendant", fields: [ancestorId], references: [id], onDelete: Cascade)
descendant Term @relation("DescendantToAncestor", fields: [descendantId], references: [id], onDelete: Cascade)
createdAt DateTime? @default(now())
}
model Comment {
id String @id @default(uuid())
style String
link String?
title String?
content String
attachments String[] @default([])
createdAt DateTime? @default(now())
updatedAt DateTime @updatedAt
deletedAt DateTime?
createdBy String?
createdStaff Staff? @relation(fields: [createdBy], references: [id])
@@map("comments")
}
model Staff {
id String @id @default(uuid())
username String @unique
password String
phoneNumber String? @unique
domainId String?
deptId String?
domain Department? @relation("DomainStaff", fields: [domainId], references: [id])
department Department? @relation("DeptStaff", fields: [deptId], references: [id])
registerToken String?
order Int
deletedAt DateTime?
system Boolean? @default(false)
comments Comment[]
terms Term[]
refreshTokens RefreshToken[]
}
model RefreshToken {
id String @id @default(uuid())
token String @unique
staffId String
staff Staff @relation(fields: [staffId], references: [id])
createdAt DateTime @default(now())
@@map("refreshTokens")
}
model Department {
id String @id @default(uuid())
name String
order Int
ancestors DeptAncestry[] @relation("DescendantToAncestor")
descendants DeptAncestry[] @relation("AncestorToDescendant")
parentId String? @map("parentId")
parent Department? @relation("ChildParent", fields: [parentId], references: [id])
children Department[] @relation("ChildParent")
domainTerms Term[] @relation("TermDom")
deletedAt DateTime?
isDomain Boolean? @default(false)
domainStaffs Staff[] @relation("DomainStaff")
deptStaffs Staff[] @relation("DeptStaff")
}
model DeptAncestry {
ancestorId String
descendantId String
relDepth Int
ancestor Department @relation("AncestorToDescendant", fields: [ancestorId], references: [id])
descendant Department @relation("DescendantToAncestor", fields: [descendantId], references: [id])
@@id([descendantId, ancestorId])
@@index([ancestorId]) // 对ancestorId字段建立索引以加快基于ancestorId的查找速度
@@index([descendantId]) // 对descendantId字段建立索引以加快基于descendantId的查找速度
}
model RoleMap {
id String @id @default(uuid())
objectId String
roleId String
domainId String?
objectType String
role Role @relation(fields: [roleId], references: [id])
}
model Role {
id String @id @default(uuid())
name String @unique
permissions String[] @default([])
roleMaps RoleMap[]
deletedAt DateTime?
system Boolean? @default(false)
}