Files
stripstream-librarian/infra/migrations/0067_add_available_downloads.sql
Froidefond Julien 885ef7b5b2 feat: table available_downloads découplée des jobs de détection
- Nouvelle table available_downloads (library_id, series_name) unique
  comme source de vérité pour les téléchargements disponibles
- Les jobs de détection font UPSERT (ajout/mise à jour) et DELETE
  (séries complètes ou sans résultat)
- Après import, mise à jour ciblée : retire les volumes importés des
  releases, supprime l'entrée si plus de releases
- Migration avec import des données existantes depuis detection_results
- Endpoint latest-found simplifié : une seule query sur la table

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 12:59:57 +01:00

21 lines
944 B
SQL

CREATE TABLE available_downloads (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
library_id UUID NOT NULL REFERENCES libraries(id) ON DELETE CASCADE,
series_name TEXT NOT NULL,
missing_count INTEGER NOT NULL DEFAULT 0,
available_releases JSONB,
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(library_id, series_name)
);
CREATE INDEX idx_available_downloads_library ON available_downloads(library_id);
-- Migrate existing detection results into the new table
INSERT INTO available_downloads (library_id, series_name, missing_count, available_releases, updated_at)
SELECT DISTINCT ON (library_id, series_name)
library_id, series_name, missing_count, available_releases, created_at
FROM download_detection_results
WHERE status = 'found' AND available_releases IS NOT NULL
ORDER BY library_id, series_name, created_at DESC
ON CONFLICT DO NOTHING;