#!/usr/bin/env bash
set -euo pipefail

if [[ $EUID -eq 0 ]]
then
  run_on_db() {
    local db="$1"; shift
    local sql="$*"
    su - postgres -c "psql -d '$db' -c \"$sql\""
  }
else
  if ! command -v sudo &>/dev/null; then
    echo "Ошибка: нужен sudo или запуск от root." >&2
    exit 1
  fi
  run_on_db() {
    local db="$1"; shift
    local sql="$*"
    sudo -u postgres psql -d "$db" -c "$sql"
  }
fi

databases=(
  "platform_manager"
  "platform_manager_cache"
)

common_sql="
CREATE EXTENSION IF NOT EXISTS pgcrypto;
GRANT USAGE ON SCHEMA public TO polymatica;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO polymatica;
GRANT CREATE ON DATABASE %DB% TO polymatica;
"

for db in "${databases[@]}"; do
  echo "=== Настройка базы: $db ==="
  sql="${common_sql//%DB%/$db}"
  run_on_db "$db" "$sql"
done

if [[ $EUID -eq 0 ]]; then
  systemctl restart polymatica-platform-manager.service
  systemctl status polymatica-platform-manager.service --no-pager
else
  sudo systemctl restart polymatica-platform-manager.service
  sudo systemctl status polymatica-platform-manager.service --no-pager
fi
