2801e4f158
packages/db-cn:@photo/db-cn(prisma 5.22,api/worker 共享 client)+ schema(users/sessions/audit_logs,DateTime(6)、cuid、账号唯一)。 迁移 SQL 手工改写表级 collation 为 utf8mb4_0900_bin——Prisma 生成的 MySQL DDL 固定 utf8mb4_unicode_ci 会覆盖库级 bin collation,账号/token 大小写 敏感语义依赖它(后续迁移需同样复核)。services/api:@Global PrismaModule (PrismaService 封装 $connect/$disconnect,池上限仍由 DATABASE_URL_CN ?connection_limit=10 承担);reset.ts 落地 FK 包裹式 TRUNCATE;e2e 语义复核 4 例(UTC 往返/大小写敏感/audit Json+actor/ session FK Restrict P2003)。pnpm 10 未拦截 prisma engines(平台包内置), 无需 onlyBuiltDependencies。 Co-Authored-By: Claude Code <noreply@anthropic.com>
24 lines
683 B
TypeScript
24 lines
683 B
TypeScript
// services/api/src/prisma/prisma.service.ts —— @photo/db-cn 的可注入封装。
|
||
// 连接池上限由 DATABASE_URL_CN 的 ?connection_limit=10 承担,这里不另行放大;
|
||
// 不使用 enableShutdownHooks(Nest 10 经 onModuleDestroy 生命周期即可优雅断开)。
|
||
import {
|
||
Injectable,
|
||
type OnModuleDestroy,
|
||
type OnModuleInit,
|
||
} from '@nestjs/common';
|
||
import { PrismaClient } from '@photo/db-cn';
|
||
|
||
@Injectable()
|
||
export class PrismaService
|
||
extends PrismaClient
|
||
implements OnModuleInit, OnModuleDestroy
|
||
{
|
||
async onModuleInit(): Promise<void> {
|
||
await this.$connect();
|
||
}
|
||
|
||
async onModuleDestroy(): Promise<void> {
|
||
await this.$disconnect();
|
||
}
|
||
}
|