Config Prisma
Overview
Executar setup determinístico da infraestrutura Prisma no apps/backend, com seed entrypoint neutro (sem tasks de módulo), módulo de banco no Nest e inicialização do Postgres via Docker Compose alinhada ao .env.
O contrato gerado de banco deve ficar compatível com a versão atual do projeto: PrismaService implementando TransactionManager e expondo runInTransaction para casos de uso transacionais (ex.: auth).
Workflow
- Confirmar que o workspace contém
apps/backend/package.json. - Executar o script da skill:
node .agents/skills/config-prisma/scripts/init-prisma-backend.js --dry-runnode .agents/skills/config-prisma/scripts/init-prisma-backend.js --apply --install
- Incluir arquivos Prisma por módulo (repetível):
node .agents/skills/config-prisma/scripts/init-prisma-backend.js --apply --module auth --module product
- Subir banco com Docker Compose do backend:
npm --workspace apps/backend run db:start
- Validar Prisma:
npm --workspace apps/backend run prisma:generate
O que o script garante
- Dependências Prisma no
apps/backend/package.json(prisma,@prisma/client,@prisma/adapter-pg,tsx) com preservação da versão já existente quando o backend já está configurado (sem upgrade forçado por padrão). - Scripts npm de banco/Prisma (
db:start,db:stop,db:logs,prisma:generate,prisma:migrate:*,prisma:seed,prisma:studio). - Remoção de script legado
prisma:cidquando presente. apps/backend/prisma.config.tscomseed: 'npx tsx prisma/seed/main.ts'.apps/backend/prisma/schema.prismacomgenerator client { provider = "prisma-client-js" }no padrão atual.apps/backend/prisma/seed/main.tsinicial (sem implementação de módulos) usandoPrismaClientde@prisma/clientcomPrismaPg.- Autocorreção apenas para templates legados de seed (
generated/client,generated/prisma,cid) sem sobrescrever seeds modernos já estruturados com tasks de módulo. - Não cria nem altera
prisma/seed/tasks/*de módulos específicos. apps/backend/prisma/models/bootstrap.model.prismatemporário apenas quando ainda não existe nenhum*.model.prismade domínio.- Arquivos de módulos Prisma no padrão
<module-name>.model.prisma. apps/backend/docker-compose.ymlalinhado aoDATABASE_URLcarregado deapps/backend/.env(fallback para.env.example).- Criação/ajuste de
apps/backend/src/db/db.module.tseapps/backend/src/db/prisma.service.ts. PrismaServicecom contrato transacional atual:- implementa
TransactionManager<PrismaTransactionContext> - expõe
runInTransaction - define
PrismaTransactionContextcomclient: Prisma.TransactionClient.
- implementa
- Inclusão de
DbModuleemapps/backend/src/app.module.tsquando ausente.
Notes
- O script é idempotente: pode ser executado várias vezes sem duplicar estrutura.
- O script instala usando o nome real do workspace lido de
apps/backend/package.json(fallback:apps/backend). - Após criar modelos reais, remover
prisma/models/bootstrap.model.prisma(se existir) e gerar nova migration. - Em backends já evoluídos, o script evita regressão de
seed/main.tspara template neutro quando o arquivo já estiver no padrão moderno com tasks registradas. - Seguir convenção global em
../skills-standards.md. - Consultar
references/prisma-init-checklist.mdpara checklist operacional.
Risk Logging Guardrails
- Registrar fatos de execucao em
.log/skills.logcom marcador no inicio da linha. - Marcadores minimos esperados:
[CMD],[FILE_CREATE],[FILE_UPDATE],[FILE_DELETE],[DIR_CREATE],[RISK],[FAIL],[AI]. - Sempre registrar
[RISK]quando houver sobrescrita, exclusao, rename/move, ou fallback forcado em arquivos/pastas. - Toda falha inesperada deve gerar
[FAIL]com descricao factual curta do evento. - Operacoes de terminal e alteracoes de arquivos devem passar pelos utilitarios compartilhados em
../utilspara manter rastreabilidade consistente.
Global Standards
- Consultar
../skills-standards.mdpara padroes globais de nomenclatura e convencoes gerais entre skills.