refactor: drop is_read and read_at from notifications table

- is_read and read_at columns are now obsolete since notification_reads
  tracks per-user read receipts
- Removed UPDATE statements in markAsRead/markAllAsRead that touched
  the old columns
- API response still includes computed is_read field via SQL CASE in
  getForUser() JOIN with notification_reads, maintaining Android
  compatibility
- Migration 009 drops both columns
This commit is contained in:
2026-06-13 11:57:56 -04:00
parent 12c3e23d9c
commit 80f5893d92
2 changed files with 3 additions and 14 deletions

View File

@@ -0,0 +1,3 @@
ALTER TABLE `notifications`
DROP COLUMN `is_read`,
DROP COLUMN `read_at`;

View File

@@ -86,13 +86,6 @@ class Notification
} catch (\Throwable $e) {
// Already read, ignore
}
$this->db->update(
'notifications',
['is_read' => 1, 'read_at' => date('Y-m-d H:i:s')],
'id = ? AND (user_id IS NULL OR user_id = ?)',
[$id, $userId]
);
}
public function markAllAsRead(int $userId): void
@@ -119,13 +112,6 @@ class Notification
// Duplicate entry — already read, skip
}
}
$this->db->update(
'notifications',
['is_read' => 1, 'read_at' => $now],
'(user_id IS NULL OR user_id = ?) AND is_read = 0',
[$userId]
);
}
public function getAll(int $page = 1, int $perPage = 20): array