#!/usr/bin/env bash set -Eeuo pipefail IFS=$'\n\t' log() { printf '%s\n' "$*"; } log_err() { printf 'ERR: %s\n' "$*" >&2; } usage() { cat <<'USG' Usage: db_check.sh Env: DATABASE_URL or PGHOST/PGPORT/PGDATABASE/PGUSER/PGPASSWORD USG } command -v psql >/dev/null 2>&1 || { log_err "psql not found"; exit 127; } if [[ -n "${DATABASE_URL:-}" ]]; then PSQL_ARGS=("$DATABASE_URL") else : "${PGHOST:?PGHOST required or set DATABASE_URL}" : "${PGDATABASE:?PGDATABASE required or set DATABASE_URL}" PSQL_ARGS=("host=$PGHOST" "port=${PGPORT:-5432}" "dbname=$PGDATABASE" "user=${PGUSER:-postgres}") fi SQL=$(cat <<'SQL' \timing on SELECT 'atomic_facts_total' AS metric, count(*) AS value FROM atomic_facts UNION ALL SELECT 'by_category:' || category, count(*) FROM atomic_facts GROUP BY category ORDER BY 1; SQL ) psql "${PSQL_ARGS[@]}" -At -c "$SQL" | awk -F'|' '{ printf("%s: %s\n", $1, $2) }'