#!/bin/sh
# postrm for multiportal.
#   remove : leave configuration, logs and all state in place.
#   purge  : delete config, runtime, published assets and logs, but KEEP user
#            data (iso/, uploads/, backup/) - deleting ISOs, branding and DB
#            backups on purge would be silent data loss. Never touches the
#            MariaDB database (mpctl created it), and keeps the multiportal
#            system user (removing it would orphan any remaining files' UIDs).
set -e

STATE_DIR=/var/lib/multiportal
CONF_DIR=/etc/multiportal

case "$1" in
    purge)
        rm -f "$CONF_DIR/.env"
        rmdir "$CONF_DIR" 2>/dev/null || true

        # Transient state only - never `rm -rf $STATE_DIR`, which would take the
        # retained user-data dirs with it.
        rm -rf "$STATE_DIR/runtime" "$STATE_DIR/assets"
        rm -rf /var/log/multiportal

        if [ -d "$STATE_DIR" ]; then
            echo "multiportal: kept user data in $STATE_DIR (iso/, uploads/, backup/). Remove manually if no longer needed." >&2
        fi
        echo "multiportal: the MariaDB database was left untouched." >&2

        if command -v deb-systemd-helper >/dev/null 2>&1; then
            for unit in multiportal-websocket.service 'multiportal-queue@1.service' multiportal-cron.timer; do
                deb-systemd-helper purge "$unit" >/dev/null 2>&1 || true
            done
        fi
        # Operator-enabled extra queue instances (@2+) leave their own enable
        # state and .wants links; deb-systemd-helper only knows about @1.
        rm -f /etc/systemd/system/multi-user.target.wants/multiportal-queue@*.service
        rm -f /var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/multiportal-queue@*.service
        if [ -d /run/systemd/system ]; then
            systemctl daemon-reload >/dev/null 2>&1 || true
        fi
        ;;
    remove)
        if [ -d /run/systemd/system ]; then
            systemctl daemon-reload >/dev/null 2>&1 || true
        fi
        ;;
    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
        ;;
esac

exit 0
