Fix notification queries to exclude tasks from inactive residences
- task_repo.go: Add is_active filter to residence subquery in UserIDs filter - handler.go: Add is_active filter to daily digest residence join - onboarding_email_service.go: Fix Django table names and task status filter - task_repo_test.go: Add regression tests for inactive residence filtering 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -168,10 +168,10 @@ func (s *OnboardingEmailService) UsersNeedingNoResidenceEmail() ([]models.User,
|
||||
// 3. Have no residences
|
||||
// 4. Haven't received this email type yet
|
||||
err := s.db.Raw(`
|
||||
SELECT u.* FROM users u
|
||||
LEFT JOIN residences r ON r.owner_id = u.id AND r.is_active = true
|
||||
SELECT u.* FROM auth_user u
|
||||
LEFT JOIN residence_residence r ON r.owner_id = u.id AND r.is_active = true
|
||||
LEFT JOIN onboarding_emails oe ON oe.user_id = u.id AND oe.email_type = ?
|
||||
WHERE u.verified = true
|
||||
WHERE u.is_active = true
|
||||
AND u.date_joined < ?
|
||||
AND r.id IS NULL
|
||||
AND oe.id IS NULL
|
||||
@@ -197,15 +197,15 @@ func (s *OnboardingEmailService) UsersNeedingNoTasksEmail() ([]models.User, erro
|
||||
// 4. Have no tasks across ANY of their residences
|
||||
// 5. Haven't received this email type yet
|
||||
err := s.db.Raw(`
|
||||
SELECT DISTINCT u.* FROM users u
|
||||
INNER JOIN residences r ON r.owner_id = u.id AND r.is_active = true
|
||||
LEFT JOIN tasks t ON t.residence_id IN (SELECT id FROM residences WHERE owner_id = u.id AND is_active = true) AND t.is_active = true
|
||||
SELECT DISTINCT u.* FROM auth_user u
|
||||
INNER JOIN residence_residence r ON r.owner_id = u.id AND r.is_active = true
|
||||
LEFT JOIN task_task t ON t.residence_id IN (SELECT id FROM residence_residence WHERE owner_id = u.id AND is_active = true) AND t.is_cancelled = false AND t.is_archived = false
|
||||
LEFT JOIN onboarding_emails oe ON oe.user_id = u.id AND oe.email_type = ?
|
||||
WHERE u.verified = true
|
||||
WHERE u.is_active = true
|
||||
AND t.id IS NULL
|
||||
AND oe.id IS NULL
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM residences r2
|
||||
SELECT 1 FROM residence_residence r2
|
||||
WHERE r2.owner_id = u.id
|
||||
AND r2.is_active = true
|
||||
AND r2.created_at < ?
|
||||
|
||||
Reference in New Issue
Block a user