-- Añadir columna generada url_norm y crear índice único sobre ella.
-- OJO: si ya existen duplicados, este índice fallará.
-- Primero crea la columna si no existe:

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_name='feeds' AND column_name='url_norm'
  ) THEN
    ALTER TABLE feeds
      ADD COLUMN url_norm text GENERATED ALWAYS AS (normalize_url(url)) STORED;
  END IF;
END $$;

-- Índice único (concurrently para no bloquear). Requiere estar fuera de transacción.
-- Si tu herramienta corre todo en una transacción, ejecuta estas dos líneas aparte.
-- Quita duplicados antes si da error.
CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS feeds_url_norm_uniq ON feeds (url_norm)
WHERE url_norm IS NOT NULL;

-- (Opcional) repetir lo mismo para fuentes_url y noticias si quieres esa garantía también:

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_name='fuentes_url' AND column_name='url_norm'
  ) THEN
    ALTER TABLE fuentes_url
      ADD COLUMN url_norm text GENERATED ALWAYS AS (normalize_url(url)) STORED;
  END IF;
END $$;

CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS fuentes_url_norm_uniq ON fuentes_url (url_norm)
WHERE url_norm IS NOT NULL;


