Ctrl K
ComunidadGuías…

drizzle/0082_monitor_history_workspace_manual.sql

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
-- History belongs to the referenced monitor, not its creator's first membership.
UPDATE public.monitor_events AS history
SET workspace_id = monitor.workspace_id
FROM public.monitors AS monitor
WHERE history.monitor_id = monitor.id
  AND history.workspace_id IS DISTINCT FROM monitor.workspace_id;

UPDATE public.monitor_checks AS history
SET workspace_id = monitor.workspace_id
FROM public.monitors AS monitor
WHERE history.monitor_id = monitor.id
  AND history.workspace_id IS DISTINCT FROM monitor.workspace_id;

UPDATE public.monitor_diagnostics AS history
SET workspace_id = monitor.workspace_id
FROM public.monitors AS monitor
WHERE history.monitor_id = monitor.id
  AND history.workspace_id IS DISTINCT FROM monitor.workspace_id;

UPDATE public.outage_events AS history
SET workspace_id = monitor.workspace_id
FROM public.monitors AS monitor
WHERE history.monitor_id = monitor.id
  AND history.workspace_id IS DISTINCT FROM monitor.workspace_id;

-- Preserve duplicate outage evidence while retaining only the latest open state.
-- Otherwise correcting scope could conflict with the per-workspace open index.
WITH ranked_open AS (
  SELECT id, row_number() OVER (
    PARTITION BY monitor_id ORDER BY started_at DESC, id DESC
  ) AS position
  FROM public.monitor_outages
  WHERE status = 'open' AND resolved_at IS NULL
)
UPDATE public.monitor_outages AS outage
SET status = 'resolved',
    resolved_at = coalesce(outage.last_checked_at, outage.started_at),
    updated_at = now()
FROM ranked_open
WHERE outage.id = ranked_open.id AND ranked_open.position > 1;

UPDATE public.monitor_outages AS history
SET workspace_id = monitor.workspace_id
FROM public.monitors AS monitor
WHERE history.monitor_id = monitor.id
  AND history.workspace_id IS DISTINCT FROM monitor.workspace_id;