49 lines
1.9 KiB
Plaintext
49 lines
1.9 KiB
Plaintext
|
|
// packages/db-cn/prisma/schema.prisma —— CN 侧唯一 schema(Task 8 起步:身份与审计域)。
|
|||
|
|
// 约定:MySQL 8.4、库级 collation utf8mb4_0900_bin(大小写敏感,账号/token 语义依赖它);
|
|||
|
|
// 时间一律 @db.DateTime(6);ID cuid;连接池上限由 DATABASE_URL_CN 的 ?connection_limit=10
|
|||
|
|
// 承担,不在应用侧另行放大。
|
|||
|
|
generator client {
|
|||
|
|
provider = "prisma-client-js"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
datasource db {
|
|||
|
|
provider = "mysql"
|
|||
|
|
url = env("DATABASE_URL_CN")
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
model users {
|
|||
|
|
id String @id @default(cuid())
|
|||
|
|
account String @unique @db.VarChar(64)
|
|||
|
|
passwordHash String @db.VarChar(255)
|
|||
|
|
displayName String @db.VarChar(128)
|
|||
|
|
role String @default("staff") // staff|admin(公司角色;相册角色另表)
|
|||
|
|
sourceStatus String @default("local") // local|active|disabled(P4a 同步用)
|
|||
|
|
localLocked Boolean @default(false)
|
|||
|
|
credentialStatus String @default("active") // active|pending
|
|||
|
|
locale String? @db.VarChar(16)
|
|||
|
|
createdAt DateTime @default(now()) @db.DateTime(6)
|
|||
|
|
sessions sessions[]
|
|||
|
|
auditLogs audit_logs[]
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
model sessions {
|
|||
|
|
id String @id @default(cuid())
|
|||
|
|
userId String
|
|||
|
|
tokenHash String @unique @db.VarChar(64)
|
|||
|
|
// 长效会话期限(默认 30 天,AUTH_SESSION_TTL_SECONDS 可调;不做短时效
|
|||
|
|
// access/refresh 双层——用户决策 2026-09-17)
|
|||
|
|
expiresAt DateTime @db.DateTime(6)
|
|||
|
|
revokedAt DateTime? @db.DateTime(6) // 注销/停用撤销
|
|||
|
|
user users @relation(fields: [userId], references: [id])
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
model audit_logs {
|
|||
|
|
id String @id @default(cuid())
|
|||
|
|
actorId String?
|
|||
|
|
action String @db.VarChar(64)
|
|||
|
|
resourceId String? @db.VarChar(64)
|
|||
|
|
metadata Json?
|
|||
|
|
createdAt DateTime @default(now()) @db.DateTime(6)
|
|||
|
|
actor users? @relation(fields: [actorId], references: [id])
|
|||
|
|
}
|