Files
ems/db/routines/R__090_fn_plan_compare_bundle.sql
Dusan Vojacek d984716f69
Some checks failed
CI and deploy / migration-check (push) Failing after 12s
CI and deploy / deploy (push) Has been skipped
speedup zalozka planning
2026-05-21 10:37:32 +02:00

61 lines
1.5 KiB
PL/PgSQL

-- Jedno volání DB pro GET /plan/compare (aktivní bundle + comparison run debug).
create or replace function ems.fn_plan_compare_bundle(p_site_id int)
returns jsonb
language plpgsql
stable
as $fn$
declare
v_active jsonb;
v_active_run_id int;
v_compare_run_id int;
v_comparison jsonb;
begin
v_active := ems.fn_plan_current_bundle(p_site_id);
if v_active ? 'error' then
return v_active;
end if;
v_active_run_id := (v_active->'run'->>'id')::int;
if v_active_run_id is null then
return jsonb_build_object('error', 'no_active_plan');
end if;
select pr.id
into v_compare_run_id
from ems.planning_run pr
where pr.site_id = p_site_id
and pr.status = 'comparison'
and (pr.solver_params->>'comparison_of_run_id')::int = v_active_run_id
order by pr.created_at desc
limit 1;
if v_compare_run_id is null then
select pr.id
into v_compare_run_id
from ems.planning_run pr
where pr.site_id = p_site_id
and pr.status = 'comparison'
order by pr.created_at desc
limit 1;
end if;
if v_compare_run_id is null then
return jsonb_build_object('error', 'no_comparison_plan');
end if;
v_comparison := ems.fn_planning_run_debug(v_compare_run_id);
if v_comparison is null then
return jsonb_build_object('error', 'no_comparison_plan');
end if;
return jsonb_build_object(
'active', v_active,
'comparison', v_comparison
);
end;
$fn$;
comment on function ems.fn_plan_compare_bundle(int) is
'Aktivní plán + comparison planning_run (GET /plan/compare).';