patchcenter/migrate_planning_imports_v3.sql

31 lines
1.2 KiB
SQL

-- Migration v3 : stockage date/heure dans le bon format pour permettre le tri
-- Ajoute :
-- jour_text text -- fallback quand la cellule "Date" contient du texte libre
-- (ex: "A partir du 14/01", "Mercredi / Jeudi", "15/04 - 16/04")
-- heure_t time -- heure typée pour tri SQL/JS
-- Backfill heure_t depuis la colonne heure existante (formats "9H00", "12h30", "9:00").
-- Idempotent.
ALTER TABLE public.patch_planning_import_rows
ADD COLUMN IF NOT EXISTS jour_text text,
ADD COLUMN IF NOT EXISTS heure_t time;
-- Backfill heure_t depuis l'existant (uniquement si pas déjà rempli)
UPDATE public.patch_planning_import_rows
SET heure_t = CASE
-- "9H00", "12h30", "14H00"
WHEN heure ~* '^[0-9]{1,2}[Hh][0-9]{2}$' THEN
((regexp_replace(heure, '[Hh]', ':')) || ':00')::time
-- "9:00", "14:30"
WHEN heure ~ '^[0-9]{1,2}:[0-9]{2}$' THEN
(heure || ':00')::time
-- "9:00:00"
WHEN heure ~ '^[0-9]{1,2}:[0-9]{2}:[0-9]{2}$' THEN
heure::time
ELSE NULL
END
WHERE heure IS NOT NULL AND heure_t IS NULL;
CREATE INDEX IF NOT EXISTS idx_pp_rows_jour_heure
ON public.patch_planning_import_rows(jour, heure_t);