uprava zapisovani casu do deye (nevyvolava self_sustain), notifikace na discord pri zmene rezimu
This commit is contained in:
@@ -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.';
|
||||
|
||||
-- ============================================================
|
||||
|
||||
|
||||
Reference in New Issue
Block a user