feat(api): master-login stub + WorkspacePrismaPool (Frente E)
- Prisma 7: prisma.config.ts com datasource.url (API correta); schema gerado em CJS - WorkspacePrismaPool: LRU cache (max 10) de PrismaClient por workspace (ADR 0006) PrismaPg adapter + pg.Pool por workspace; getOrCreate/health/onModuleDestroy - JwtAuthGuard: global APP_GUARD, jose HS256, popula CLS com workspace_id/userId/prisma @Public() decorator marca ping/health/dev-auth como rotas abertas - DevAuthController: POST /auth/dev/token — emite JWT dev (404 em produção) - AuthTokenResponseSchema + DevTokenRequestSchema em @sar/api-interface - WorkspacePoolHealthIndicator: health/ready reporta amostra LRU top-3 (nunca O(N)) - .npmrc: hoist @prisma/client-runtime-utils (requerido pelo Prisma 7 isolated mode) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
26
apps/api/prisma/schema.prisma
Normal file
26
apps/api/prisma/schema.prisma
Normal file
@@ -0,0 +1,26 @@
|
||||
// SAR — Workspace Database Schema
|
||||
// Stack canon: Prisma 7 · PostgreSQL 18 · BD-por-workspace (ADR 0006)
|
||||
//
|
||||
// Este schema roda em CADA workspace DB (sar_workspace_<id>).
|
||||
// NÃO há workspaceId/tenantId em nenhum modelo — o isolamento é físico.
|
||||
// O banco master (sar_master) é gerenciado pelo master-login (IdP JCS), não por este schema.
|
||||
//
|
||||
// CODING-RULES PGD-DB-004: moduleFormat = "cjs" (NestJS é CJS)
|
||||
// CODING-RULES PGD-DB-001: MIGRATION_DATABASE_URL aponta direto ao PG (sem PgBouncer)
|
||||
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
output = "../../../node_modules/.prisma/client"
|
||||
moduleFormat = "cjs"
|
||||
}
|
||||
|
||||
// Prisma 7: url foi removida do schema — conexão fica em prisma.config.ts (migrate)
|
||||
// e no WorkspacePrismaPool via PrismaPg adapter (runtime).
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
}
|
||||
|
||||
// ─── Modelos de domínio serão adicionados por feature ──────────────────────
|
||||
//
|
||||
// Próximos: Client (C2), Order + OrderItem (C3/C4) — vindos das stories.
|
||||
// Cada model novo exige: migration versionada + seed de dev atualizado.
|
||||
Reference in New Issue
Block a user