#!/bin/sh
# Remove the stack containers here (target still exists so the setuid
# helper is available); postuninst runs after files are removed.
DOCKER="${SYNOPKG_PKGDEST}/tool/kv-helper"
DB_IMAGE="postgres:16-alpine"
PKGVAR_DIR="${SYNOPKG_PKGVAR:-/var/packages/kvtube/var}"

if [ "${SYNOPKG_PKG_STATUS}" = "UNINSTALL" ]; then
    SITE_URL=""
    [ -f "/var/packages/kvtube/etc/site_url" ] && SITE_URL="$(head -1 "/var/packages/kvtube/etc/site_url" 2>/dev/null)"
    INVIDIOUS_URL=""
    [ -f "/var/packages/kvtube/etc/invidious_url" ] && INVIDIOUS_URL="$(head -1 "/var/packages/kvtube/etc/invidious_url" 2>/dev/null)"

    # Clean up DSM Reverse Proxy rules
    if [ -f "${SYNOPKG_PKGDEST}/tool/wire-proxy.sh" ]; then
        chmod +x "${SYNOPKG_PKGDEST}/tool/wire-proxy.sh" 2>/dev/null || true
        "${DOCKER}" sys "${SYNOPKG_PKGDEST}/tool/wire-proxy.sh" remove "${SITE_URL}" "${INVIDIOUS_URL}" >/dev/null 2>&1 || true
    fi

    for c in kvtube-ui kvtube-invidious kvtube-companion kvtube-db; do
        "${DOCKER}" rm -f "$c" >/dev/null 2>&1 || true
    done
    "${DOCKER}" network rm kvtube-net >/dev/null 2>&1 || true
    # Wipe the Postgres cluster as root (kv-helper is setuid). The data dir
    # is owned by the postgres UID with mode 700, so the package user's rm
    # fails with EACCES; a leftover cluster would reject the newly generated
    # db password on reinstall (POSTGRES_PASSWORD is only honored on first
    # init), which is exactly the crash loop seen with earlier versions.
    if [ -d "${PKGVAR_DIR}/data/invidious/db" ]; then
        "${DOCKER}" run --rm --entrypoint rm \
            -v "${PKGVAR_DIR}/data/invidious/db:/data" \
            "${DB_IMAGE}" -rf /data >/dev/null 2>&1 || true
    fi
fi
exit 0