opravy chybejicich contraints
Some checks failed
deploy / deploy (push) Failing after 16s
test / smoke-test (push) Has been cancelled

This commit is contained in:
Dusan Vojacek
2026-04-05 03:06:19 +02:00
parent a7cff141f7
commit 743b74d788
4 changed files with 119 additions and 27 deletions

View File

@@ -0,0 +1,58 @@
-- telemetry_collector: INSERT … ON CONFLICT vyžaduje UNIQUE/PK odpovídající cíli konfliktu.
-- Stejná třída problému jako u market_interval_price (V032): DB bez primárních klíčů z V001.
DO $$
BEGIN
IF EXISTS (
SELECT 1 FROM pg_catalog.pg_class r
JOIN pg_catalog.pg_namespace n ON n.oid = r.relnamespace
WHERE n.nspname = 'ems' AND r.relname = 'telemetry_inverter' AND r.relkind = 'r'
) AND NOT EXISTS (
SELECT 1 FROM pg_catalog.pg_constraint c
JOIN pg_catalog.pg_class r ON r.oid = c.conrelid
JOIN pg_catalog.pg_namespace n ON n.oid = r.relnamespace
WHERE n.nspname = 'ems' AND r.relname = 'telemetry_inverter' AND c.contype = 'p'
) THEN
ALTER TABLE ems.telemetry_inverter
ADD CONSTRAINT telemetry_inverter_pkey PRIMARY KEY (inverter_id, measured_at);
END IF;
END $$;
DO $$
BEGIN
IF EXISTS (
SELECT 1 FROM pg_catalog.pg_class r
JOIN pg_catalog.pg_namespace n ON n.oid = r.relnamespace
WHERE n.nspname = 'ems' AND r.relname = 'telemetry_ev_charger' AND r.relkind = 'r'
) AND NOT EXISTS (
SELECT 1 FROM pg_catalog.pg_constraint c
JOIN pg_catalog.pg_class r ON r.oid = c.conrelid
JOIN pg_catalog.pg_namespace n ON n.oid = r.relnamespace
WHERE n.nspname = 'ems' AND r.relname = 'telemetry_ev_charger' AND c.contype = 'p'
) THEN
ALTER TABLE ems.telemetry_ev_charger
ADD CONSTRAINT telemetry_ev_charger_pkey PRIMARY KEY (charger_id, connector_id, measured_at);
END IF;
END $$;
DO $$
BEGIN
IF EXISTS (
SELECT 1 FROM pg_catalog.pg_class r
JOIN pg_catalog.pg_namespace n ON n.oid = r.relnamespace
WHERE n.nspname = 'ems' AND r.relname = 'telemetry_heat_pump' AND r.relkind = 'r'
) AND NOT EXISTS (
SELECT 1 FROM pg_catalog.pg_constraint c
JOIN pg_catalog.pg_class r ON r.oid = c.conrelid
JOIN pg_catalog.pg_namespace n ON n.oid = r.relnamespace
WHERE n.nspname = 'ems' AND r.relname = 'telemetry_heat_pump' AND c.contype = 'p'
) THEN
ALTER TABLE ems.telemetry_heat_pump
ADD CONSTRAINT telemetry_heat_pump_pkey PRIMARY KEY (heat_pump_id, measured_at);
END IF;
END $$;
-- Jeden otevřený řádek session na nabíječku (V020); bez indexu spadne ON CONFLICT v telemetry_collector.
CREATE UNIQUE INDEX IF NOT EXISTS uidx_ev_session_charger_open
ON ems.ev_session (charger_id)
WHERE session_end IS NULL;