flnxi-Wu/license-server/prisma/schema-main.prisma
2026-05-25 14:31:58 +08:00

69 lines
2.2 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.

// 主数据库 Schema - 用于管理项目和用户
// 数据库名建议:license-server-main
generator client {
provider = "prisma-client-js"
binaryTargets = ["native", "linux-musl", "debian-openssl-3.0.x"]
output = "../node_modules/.prisma/main-client"
}
datasource db {
provider = "postgresql"
url = env("MAIN_DATABASE_URL")
}
// 项目表
model Project {
id String @id @default(uuid())
code String @unique @map("code") // 项目唯一标识,如 flnxi-sucai
name String @map("name") // 显示名称
description String? @map("description")
// 数据库连接配置
dbHost String @map("db_host") // 数据库主机
dbPort Int @default(5432) @map("db_port") // 数据库端口
dbName String @map("db_name") // 数据库名
dbUser String @map("db_user") // 数据库用户
dbPassword String @map("db_password") // 数据库密码(AES加密存储)
dbSchema String @default("public") @map("db_schema")
// 项目状态
isActive Boolean @default(true) @map("is_active")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
// 关联
adminProjects AdminProject[]
@@map("projects")
}
// 管理员表
model Admin {
id String @id @default(uuid())
username String @unique
passwordHash String @map("password_hash")
isSuperAdmin Boolean @default(false) @map("is_super_admin") // 超管可访问所有项目
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
// 关联
adminProjects AdminProject[]
@@map("admins")
}
// 管理员-项目权限关联表
model AdminProject {
adminId String @map("admin_id")
projectId String @map("project_id")
role String @default("admin") // admin / viewer
createdAt DateTime @default(now()) @map("created_at")
admin Admin @relation(fields: [adminId], references: [id], onDelete: Cascade)
project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)
@@id([adminId, projectId])
@@map("admin_projects")
}