#!/bin/bash

# 參數說明：
# $1: type (prefix / postfix / contain)
# $2: pattern
# $3: backup_flag (1:備份 / 0:不備份，預設 1)

if [ -z "$2" ]; then
    exec echo "Usage: $0 <type: prefix / postfix / contain> <pattern> [backup_flag: 1|0]"
fi

TYPE=$1
PATTERN=$2
BACKUP_FLAG="${3:-1}"   # 預設為 1 (備份)

# 檢查 BACKUP_FLAG 合法性
if [[ "$BACKUP_FLAG" != "0" && "$BACKUP_FLAG" != "1" ]]; then
    echo "Error: backup_flag must be 0 or 1, got '$BACKUP_FLAG'"
    echo "Usage: $0 <type: prefix / postfix / contain> <pattern> [backup_flag: 1|0]"
    exit 1
fi

case "${TYPE}" in
    prefix)
        DBNAME_LISTS=$(psql -U postgres -Atqc \
            "SELECT datname FROM pg_database WHERE datname ~ '^${PATTERN}';")
        ;;
    postfix)
        DBNAME_LISTS=$(psql -U postgres -Atqc \
            "SELECT datname FROM pg_database WHERE datname ~ '${PATTERN}$';")
        ;;
    contain)
        DBNAME_LISTS=$(psql -U postgres -Atqc \
            "SELECT datname FROM pg_database WHERE datname ~ '${PATTERN}';")
        ;;
    *)
        echo "Unknown type for ${TYPE}!"
        echo "Valid types: prefix / postfix / contain"
        exit 1
        ;;
esac

for dbname in ${DBNAME_LISTS}; do
    echo "==> ${dbname}"

    if [[ "$BACKUP_FLAG" -eq 1 ]]; then
        echo "  - Backup ${dbname}"
        "$HOME/bin/DBbackup" "${dbname}"
    else
        echo "  - Skip backup for ${dbname}"
    fi

    echo "  - Drop database ${dbname}"
    psql -U postgres -c "DROP DATABASE IF EXISTS \"${dbname}\";"
done

