#!/bin/bash
# Connect to local Postgres via the keycloak.env creds and run SELECT 1.
if [ -r /etc/vexor/keycloak.env ]; then
  set -a; . /etc/vexor/keycloak.env; set +a
fi
[ -z "${KC_DB_PASSWORD:-}" ] && { echo "CRITICAL: KC_DB_PASSWORD missing"; exit 2; }
START=$(date +%s%N)
OUT=$(PGPASSWORD="$KC_DB_PASSWORD" psql -h 127.0.0.1 -p 5432 -U "${KC_DB_USERNAME:-keycloak}" -d keycloak -tAc "SELECT 1" 2>&1)
RC=$?
END=$(date +%s%N)
MS=$(( (END - START) / 1000000 ))
if [ $RC -ne 0 ] || [ "$OUT" != "1" ]; then
  echo "CRITICAL: psql failed: $(echo "$OUT" | tr '\n' ' ' | head -c 120) | response_time=${MS}ms"
  exit 2
fi
# Pull a couple of metrics
CONNS=$(PGPASSWORD="$KC_DB_PASSWORD" psql -h 127.0.0.1 -U "${KC_DB_USERNAME:-keycloak}" -d keycloak -tAc "SELECT count(*) FROM pg_stat_activity" 2>/dev/null || echo "?")
SIZE=$(PGPASSWORD="$KC_DB_PASSWORD" psql -h 127.0.0.1 -U "${KC_DB_USERNAME:-keycloak}" -d keycloak -tAc "SELECT pg_database_size('keycloak')" 2>/dev/null || echo "0")
echo "OK: Postgres responding ($CONNS conns, $(numfmt --to=iec ${SIZE:-0})) | response_time=${MS}ms connections=$CONNS db_size_bytes=$SIZE"
exit 0
