65 lines
2.2 KiB
Bash
Executable File
65 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Tenký wrapper nad ems.fn_rebuild_consumption_baseline_stats (kanonické API je v PostgreSQL).
|
|
#
|
|
# Použití:
|
|
# export DATABASE_URL='postgres://…/ems'
|
|
# LOOKBACK_DAYS=14 ./scripts/rebuild_consumption_baseline_stats.sh 2 # jedna lokality (site.id)
|
|
#
|
|
# ./scripts/rebuild_consumption_baseline_stats.sh --all # celá tabulka stats + všichni sites
|
|
#
|
|
# MCP / psql přímo (doporučeno v SQL-first režimu):
|
|
# select * from ems.fn_rebuild_consumption_baseline_stats(2, 30);
|
|
# select * from ems.fn_rebuild_consumption_baseline_stats(null::int, 30);
|
|
#
|
|
# DRY_RUN=1 … — jen řádek count (žádné mazání).
|
|
|
|
set -euo pipefail
|
|
|
|
if [[ -z "${DATABASE_URL:-}" ]] && [[ -z "${PGHOST:-}" ]]; then
|
|
echo "Nastav DATABASE_URL nebo PG proměnné." >&2
|
|
exit 1
|
|
fi
|
|
|
|
LOOKBACK="${LOOKBACK_DAYS:-30}"
|
|
if ! [[ "$LOOKBACK" =~ ^[0-9]+$ ]] || [[ "$LOOKBACK" -lt 1 ]]; then
|
|
echo "LOOKBACK_DAYS musí být kladné celé číslo." >&2
|
|
exit 1
|
|
fi
|
|
|
|
PSQL=(psql -v ON_ERROR_STOP=1)
|
|
if [[ -n "${DATABASE_URL:-}" ]]; then
|
|
PSQL+=("$DATABASE_URL")
|
|
else
|
|
PSQL+=("${PGDATABASE:-ems}")
|
|
fi
|
|
|
|
MODE="${1:?Chybí argument: site_id (číslo) nebo --all}"
|
|
DRY="${DRY_RUN:-0}"
|
|
|
|
if [[ "$MODE" == "--all" ]]; then
|
|
if [[ "$DRY" == "1" ]] || [[ "$DRY" == "true" ]]; then
|
|
echo "DRY_RUN: consumption_baseline_stats řádků celkem, sites:"
|
|
"${PSQL[@]}" -c "
|
|
select count(*) as stats_rows from ems.consumption_baseline_stats;
|
|
select count(*) as sites from ems.site;
|
|
"
|
|
exit 0
|
|
fi
|
|
echo "Volám fn_rebuild_consumption_baseline_stats(null, ${LOOKBACK}) …"
|
|
"${PSQL[@]}" -c "select * from ems.fn_rebuild_consumption_baseline_stats(null::int, ${LOOKBACK}::int);"
|
|
else
|
|
SITE_ID="$MODE"
|
|
if ! [[ "$SITE_ID" =~ ^[0-9]+$ ]]; then
|
|
echo "První argument: site_id (číslo) nebo --all." >&2
|
|
exit 1
|
|
fi
|
|
if [[ "$DRY" == "1" ]] || [[ "$DRY" == "true" ]]; then
|
|
"${PSQL[@]}" -c "select count(*) from ems.consumption_baseline_stats where site_id = ${SITE_ID}::int;"
|
|
exit 0
|
|
fi
|
|
echo "Volám fn_rebuild_consumption_baseline_stats(${SITE_ID}, ${LOOKBACK}) …"
|
|
"${PSQL[@]}" -c "select * from ems.fn_rebuild_consumption_baseline_stats(${SITE_ID}::int, ${LOOKBACK}::int);"
|
|
fi
|
|
|
|
echo "Hotovo. Spusť rolling/denní plán nebo počkej na scheduler."
|