diff --git a/.woodpecker.yml b/.woodpecker.yml index fd9dd32..419a63a 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -4,12 +4,12 @@ steps: settings: repo: ${FORGE_NAME}/${CI_REPO} registry: - from_secret: container_registry + from_secret: local_registry tags: latest,${CI_COMMIT_SHA},${CI_COMMIT_TAG} username: - from_secret: container_registry_username + from_secret: local_password password: - from_secret: container_registry_password + from_secret: local_username dockerfile: Dockerfile when: - event: [push, tag] @@ -20,7 +20,7 @@ steps: when: - event: [push, tag] deploy: - image: quay.io/wollud1969/k8s-admin-helper:0.1.3 + image: quay.io/wollud1969/k8s-admin-helper:0.4.1 environment: KUBE_CONFIG_CONTENT: from_secret: kube_config diff --git a/queries/create.sql b/queries/create.sql index 8c1728f..9804300 100644 --- a/queries/create.sql +++ b/queries/create.sql @@ -12,3 +12,16 @@ CREATE TABLE pv_energy_by_month ( ); + +CREATE TABLE car_energy_by_month ( + id serial NOT NULL PRIMARY KEY, + month integer NOT NULL, + year integer NOT NULL, + created_at timestamp NOT NULL DEFAULT now(), + last_changed timestamp, + update_counter integer NOT NULL DEFAULT 0, + baseline_energy real NOT NULL, + current_energy real NOT NULL DEFAULT 0.0, + CONSTRAINT car_energy_by_month__month_year_unique UNIQUE(month, year) +); + diff --git a/queries/pvec.sql b/queries/pvec.sql index a3f368f..17587ea 100644 --- a/queries/pvec.sql +++ b/queries/pvec.sql @@ -51,3 +51,55 @@ INSERT INTO pv_energy_by_month update_counter = pv_energy_by_month.update_counter + 1, current_energy = (SELECT e FROM last_pv_energy_of_yesterday) - pv_energy_by_month.baseline_energy; +WITH + today AS ( + SELECT now() AS d + ), + yesterday AS ( + SELECT date_trunc('day', today.d - '1 day'::interval) AS d, + extract(month from today.d - '1 day'::interval) AS m, + extract(year from today.d - '1 day'::interval) AS y + FROM today + ), + first_car_of_yesterday AS ( + SELECT min(measurements.time) as t + FROM measurements, + yesterday + WHERE time >= yesterday.d AND + time < yesterday.d + '1 day'::interval AND + measurements.application = 'Car' + ), + last_car_of_yesterday AS ( + SELECT max(measurements.time) as t + FROM measurements, + yesterday + WHERE time >= yesterday.d AND + time < yesterday.d + '1 day'::interval AND + measurements.application = 'Car' + ), + first_car_energy_of_yesterday AS ( + SELECT cast(measurements.values->'TotalImportEnergy'->>'value' AS real) AS e + FROM measurements, + first_car_of_yesterday + WHERE measurements.time = first_car_of_yesterday.t AND + measurements.application = 'Car' + ), + last_car_energy_of_yesterday AS ( + SELECT cast(measurements.values->'TotalImportEnergy'->>'value' AS real) AS e + FROM measurements, + last_car_of_yesterday + WHERE measurements.time = last_car_of_yesterday.t AND + measurements.application = 'Car' + ) +INSERT INTO car_energy_by_month + (month, year, baseline_energy) + VALUES( + (SELECT m FROM yesterday), + (SELECT y FROM yesterday), + (SELECT e FROM first_car_energy_of_yesterday) + ) + ON CONFLICT ON CONSTRAINT car_energy_by_month__month_year_unique + DO UPDATE + SET last_changed = now(), + update_counter = car_energy_by_month.update_counter + 1, + current_energy = (SELECT e FROM last_car_energy_of_yesterday) - car_energy_by_month.baseline_energy;