Work / DwarSeva Societies / Wiki / Concepts
soft-delete
Conceptcanonicalverified 2026-10-04
CONCEPT.SOFT-DELETESummary
Deleting a record sets deletedAt; no row is removed, and every read excludes rows where it is set.
Why it matters
Society records are evidence — who was let in, who was billed. A hard delete loses the visitor log an incident needs.
Implications
- Every query filters
deletedAt: null.buildWhereClause()in the service base class adds it; a hand-written query that skips the base class must add it itself. - Deleted data is never exposed through the API, including through field resolvers.
- Seed scenario
packages/db/prisma/data/user/03_deleted_user.jsonexists to test exactly this.
Related
Sources
- AGENTS.md — "Security requirements"
- packages/db/prisma/schema.prisma