uprava zapisovani casu do deye (nevyvolava self_sustain), notifikace na discord pri zmene rezimu
Some checks failed
deploy / deploy (push) Failing after 20s
test / smoke-test (push) Successful in 3s

This commit is contained in:
Dusan Vojacek
2026-04-06 20:53:58 +02:00
parent 4881966d00
commit c955efb9cb
9 changed files with 182 additions and 96 deletions

View File

@@ -102,38 +102,44 @@ Pokud předchozí režim neexistuje, přepne na AUTO. Používat po skončení d
-- ============================================================
CREATE OR REPLACE FUNCTION ems.fn_expire_modes()
RETURNS INT
RETURNS TABLE(site_id INT, site_code TEXT, old_mode TEXT, new_mode TEXT)
LANGUAGE plpgsql
AS $$
DECLARE
v_count INT := 0;
v_rec RECORD;
v_rec RECORD;
v_new_mode TEXT;
BEGIN
-- Najít lokality kde vypršel valid_until a přepnout na AUTO
FOR v_rec IN
SELECT site_id, previous_mode
FROM ems.site_operating_mode
WHERE valid_until IS NOT NULL
AND valid_until <= now()
AND mode_code <> 'AUTO'
SELECT som.site_id,
s.code AS site_code,
som.mode_code AS old_mode,
som.previous_mode
FROM ems.site_operating_mode som
JOIN ems.site s ON s.id = som.site_id
WHERE som.valid_until IS NOT NULL
AND som.valid_until <= now()
AND som.mode_code <> 'AUTO'
LOOP
v_new_mode := COALESCE(v_rec.previous_mode, 'AUTO');
PERFORM ems.fn_set_mode(
v_rec.site_id,
COALESCE(v_rec.previous_mode, 'AUTO'),
v_new_mode,
'system:expiry',
NULL,
'Automatické vypršení dočasného režimu'
);
v_count := v_count + 1;
site_id := v_rec.site_id;
site_code := v_rec.site_code;
old_mode := v_rec.old_mode;
new_mode := v_new_mode;
RETURN NEXT;
END LOOP;
RETURN v_count;
END;
$$;
COMMENT ON FUNCTION ems.fn_expire_modes() IS
'Zkontroluje všechny lokality s dočasným režimem (valid_until IS NOT NULL) a přepne zpět ty s prosahlým časem.
Volat každou minutu jako scheduled task. Vrátí počet přepnutých lokalit.';
Volat každou minutu jako scheduled task. Vrátí řádky (site_id, site_code, old_mode, new_mode) pro každé provedené přepnutí — backend z toho pošle Discord notifikace.';
-- ============================================================