Skip to content

[US-099][BE] Referential integrity — transactions and cascade delete #59

Description

@matix0

User Story ID

US-099

Type

BE — Backend

Epic

EP-001 — User Authentication & Profile Management

Feature

F-031

User Story

Como sistema, devo garantir consistência dos dados para manter integridade referencial.

Acceptance Criteria

[ ] Operações que escrevem em múltiplas coleções simultaneamente usam sessão de transação MongoDB (session.startTransaction())
[ ] Ao deletar um User, todas as suas Pickups associadas são removidas (cascade delete via middleware Mongoose pre('deleteOne'))
[ ] Ao deletar um EcoPoint, todas as Pickups associadas recebem ecopointId: null ou são arquivadas (definir estratégia com o time)
[ ] Em caso de falha na transação, rollback automático executado corretamente
[ ] MongoDB replica set configurado localmente para suporte a transações (ou documentado como pré-requisito de deploy)

Priority (MoSCoW)

🔴 Critical — Must Have

Story Points

3

Planned Sprint

Sprint 1

Technical Notes

Mongoose transactions requerem replica set (não funciona em standalone local por padrão)
Alternativa para dev local: mongosh --replSet rs0 ou usar MongoDB Atlas
Implementar middleware Mongoose em models/User.js: UserSchema.pre('deleteOne', ...)
Depende de: US-098 (EcoPoint model precisa existir para definir cascata)

Definition of Done

[ ] Código implementado e PR aprovado
[ ] Teste de deleção de usuário verificando remoção das Pickups
[ ] Teste de rollback em transação com falha simulada
[ ] Sem erros de lint
[ ] README/docs atualizados com requisito de replica set

Suggested Assignee

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions