Criar ou alterar modelos no banco de dados deste projeto. Use quando: novo modelo, nova coluna, novo relacionamento, novo enum, criar migration Prisma, alterar schema.prisma, adicionar índice, modificar tabela existente.
Adiciona ou modifica modelos em backend/prisma/schema.prisma seguindo as convenções deste projeto.
IDs sempre UUID:
id String @id @default(uuid())
Timestamps em todo modelo:
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
onDelete: Cascade em relacionamentos de dependência:
companyId String
company Company @relation(fields: [companyId], references: [id], onDelete: Cascade)
Enums para estados finitos:
enum <Nome>Status {
PENDING
PROCESSING
DONE
FAILED
}
Índices em colunas de filtro:
@@index([companyId])
@@index([companyId, category])
enum JobStatus { PENDING, PROCESSING, DONE, FAILED }
enum ContentType { IMAGE, REEL, STORY }
enum MediaType { IMAGE, VIDEO, LOGO }
enum StrategyApprovalStatus { PENDING_APPROVAL, APPROVED, REJECTED }
model <NomeModelo> {
id String @id @default(uuid())
name String
status JobStatus @default(PENDING)
metadata Json?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
companyId String
company Company @relation(fields: [companyId], references: [id], onDelete: Cascade)
@@index([companyId])
}
Adicionar relação inversa em Company:
<nomeModelos> <NomeModelo>[]
cd backend
npx prisma migrate dev --name <descricao_curta>
Convenção de nomes:
add_<modelo> — novo modeloadd_<campo>_to_<modelo> — novo campoadd_<nome>_index — novo índiceNunca retornar nas respostas da API:
password (campo de User)Usar select explícito ou mapear para interface de response no service.
String @id @default(uuid())createdAt + updatedAt presentesonDelete: Cascade em relações de dependência@@index nas colunas de filtroprisma migrate dev --name <descricao> executado