#!/bin/bash
# Unified Odoo nuke script (all versions).
# CONTAINER_ID, DB_NAME, SOFTWARE already exported by nukeContainer.

_self="$(realpath "${BASH_SOURCE[0]:-$0}")"; SBIN_ROOT="$(dirname "$(dirname "$_self")")"  # parent of nuke/
source "$SBIN_ROOT/helpers"
source "$SBIN_ROOT/odoo.lib"

[ -z "$CONTAINER_ID" ] && die "CONTAINER_ID not set"

load_container_config "$CONTAINER_ID"

POSTGRES_HOST="${POSTGRES_HOST:-beedb}"
POSTGRES_PORT="${POSTGRES_PORT:-5432}"
POSTGRES_ADMIN_USER="${POSTGRES_ADMIN_USER:-1gtT0sf8klB9lDbYZD9}"
POSTGRES_ADMIN_PASSWORD="${POSTGRES_ADMIN_PASSWORD:-ZpSwWNafyy9GhY2gzHw}"

DB_NAME="${DB_NAME:-$CONTAINER_ID}"
ODOO_DB_USER="$DB_NAME"

BASEURL="/4server/data/$CONTAINER_ID"
BACKUPURL="/BACKUP/$CONTAINER_ID"

log "Nuking container $CONTAINER_ID (DB_NAME=$DB_NAME)"

doas docker stop "$CONTAINER_ID" || warn "docker stop failed (may already be stopped)"
doas docker rm   "$CONTAINER_ID" || warn "docker rm failed (may not exist)"

log "Dropping PostgreSQL database: $DB_NAME"
PGPASSWORD="$POSTGRES_ADMIN_PASSWORD" psql \
    -h "$POSTGRES_HOST" -U "$POSTGRES_ADMIN_USER" -p "$POSTGRES_PORT" -d postgres \
    -c "DROP DATABASE IF EXISTS \"$DB_NAME\";" \
    || die "failed to drop database $DB_NAME"

log "Dropping PostgreSQL user: $ODOO_DB_USER"
PGPASSWORD="$POSTGRES_ADMIN_PASSWORD" psql \
    -h "$POSTGRES_HOST" -U "$POSTGRES_ADMIN_USER" -p "$POSTGRES_PORT" -d postgres <<EOF
DO
\$do\$
BEGIN
    IF EXISTS (SELECT FROM pg_catalog.pg_user WHERE usename = '${ODOO_DB_USER}') THEN
        EXECUTE 'DROP USER "' || '${ODOO_DB_USER}' || '"';
    END IF;
END
\$do\$;
EOF

log "Database '$DB_NAME' and user '$ODOO_DB_USER' removed"

# Uncomment when ready to also wipe data directories:
# log "Removing data directory: $BASEURL"
# doas rm -rf "$BASEURL"
# log "Removing backup directory: $BACKUPURL"
# doas rm -rf "$BACKUPURL"
