#!/bin/bash
set -euo pipefail

if [ "$(id -u)" != "0" ]; then
    echo "[ERROR] Tento skript musí být spuštěn jako root (sudo)." >&2
    exit 1
fi

echo "[INFO] Uninstalling Terkom Diagnostic V2.1..."

TERKOM_HOME="/opt/terkom-ng/terkom"
SCRIPT_DIR="$TERKOM_HOME/scripts"
DIAG_SCRIPT="$SCRIPT_DIR/terkom-diagnostic.sh"
PERSIST_DIR="$SCRIPT_DIR/diagnostic"
CONFIG_FILE="$TERKOM_HOME/config-local.yaml"
SERVICE_FILE="/etc/systemd/system/terkom-diagnostic.service"
TIMER_FILE="/etc/systemd/system/terkom-diagnostic.timer"
STATE_DIR="/run/terkom-diagnostic"
REMOVE_LOGS="${REMOVE_LOGS:-false}"
REMOVE_PSQL="${REMOVE_PSQL:-false}"

mount -o remount,rw / 2>/dev/null || true
mount -o remount,rw /boot 2>/dev/null || true

systemctl disable --now terkom-diagnostic.timer 2>/dev/null || true
systemctl stop terkom-diagnostic.service 2>/dev/null || true

rm -f "$TIMER_FILE" "$SERVICE_FILE" "$DIAG_SCRIPT"
rm -rf "$STATE_DIR"

# Zálohy apt souborů vytvořené při instalaci
rm -f /etc/apt/sources.list.terkom-diagnostic.bak
rm -f /etc/apt/sources.list.d/yarn.list.terkom-diagnostic.bak
echo "[INFO] Removed apt backup files (if any)."

if [ "$REMOVE_LOGS" = "true" ]; then
    rm -rf "$PERSIST_DIR"
    echo "[INFO] Removed diagnostic logs: $PERSIST_DIR"
else
    echo "[INFO] Diagnostic logs kept: $PERSIST_DIR"
fi

if [ -f "$CONFIG_FILE" ]; then
    sed -i 's/---DIAGNOSTIKA//g' "$CONFIG_FILE"
    echo "[INFO] Removed ---DIAGNOSTIKA marker from config-local.yaml."
fi

systemctl daemon-reload
systemctl reset-failed 2>/dev/null || true

if [ "$REMOVE_PSQL" = "true" ]; then
    echo "[WARN] REMOVE_PSQL=true, removing PostgreSQL client packages."
    apt-get remove -y postgresql-client postgresql-client-common || true
    apt-get autoremove -y || true
else
    echo "[INFO] postgresql-client kept installed. Set REMOVE_PSQL=true to remove it manually."
fi

sync || true
mount -o remount,ro /boot 2>/dev/null || true
mount -o remount,ro / 2>/dev/null || true

echo "[OK] Uninstall complete."
