feat(workbench): keep only actionable notifications
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
-- Remove historical task lifecycle notices that do not require user action.
|
||||
|
||||
BEGIN;
|
||||
|
||||
CREATE TEMP TABLE notification_cleanup_projects ON COMMIT DROP AS
|
||||
SELECT
|
||||
project_id,
|
||||
count(*)::bigint AS removed_count
|
||||
FROM workbench.operational_task_notifications
|
||||
WHERE document->>'kind' IN ('task_created', 'report_updated', 'task_completed')
|
||||
GROUP BY project_id;
|
||||
|
||||
DELETE FROM workbench.operational_task_notifications
|
||||
WHERE document->>'kind' IN ('task_created', 'report_updated', 'task_completed');
|
||||
|
||||
WITH inserted_events AS (
|
||||
INSERT INTO workbench.domain_event_log (
|
||||
project_id,
|
||||
event_id,
|
||||
topic,
|
||||
aggregate_type,
|
||||
aggregate_id,
|
||||
aggregate_revision,
|
||||
metadata
|
||||
)
|
||||
SELECT
|
||||
project_id,
|
||||
(
|
||||
substr(md5(project_id::text || ':notification-routing-v1'), 1, 8)
|
||||
|| '-' || substr(md5(project_id::text || ':notification-routing-v1'), 9, 4)
|
||||
|| '-5' || substr(md5(project_id::text || ':notification-routing-v1'), 14, 3)
|
||||
|| '-a' || substr(md5(project_id::text || ':notification-routing-v1'), 18, 3)
|
||||
|| '-' || substr(md5(project_id::text || ':notification-routing-v1'), 21, 12)
|
||||
)::uuid,
|
||||
'operational.notification.changed',
|
||||
'operational_notification_batch',
|
||||
project_id::text,
|
||||
removed_count,
|
||||
jsonb_build_object(
|
||||
'change', 'batch_pruned',
|
||||
'reason', 'non_actionable_notification_cleanup',
|
||||
'removed_count', removed_count
|
||||
)
|
||||
FROM notification_cleanup_projects
|
||||
ON CONFLICT (project_id, event_id) DO NOTHING
|
||||
RETURNING project_id, event_seq
|
||||
)
|
||||
SELECT pg_notify('workbench_events', project_id::text || ':' || event_seq::text)
|
||||
FROM inserted_events;
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user