> And forgetting that extra predicate on deleted_at can have dangerous consequences as it accidentally returns data that’s no longer meant to be seen.
For postgres you could consider using a view instead. See https://evilmartians.com/chronicles/soft-deletion-with-postg...