#!/bin/bash
set -o pipefail

APP_NAME="codimd"
BACKUP_DIR="./backup"
TIMESTAMP=$(date +%Y%m%d-%H%M)
DB_BACKUP_FILE="${BACKUP_DIR}/${APP_NAME}-db-${TIMESTAMP}.sql.gz"
UPLOADS_BACKUP_FILE="${BACKUP_DIR}/${APP_NAME}-uploads-${TIMESTAMP}.tar.gz"

# 1. 取得 Pod 名稱
DB_POD=$(kubectl get pod -l app=codimd-db -o jsonpath="{.items[0].metadata.name}" 2>/dev/null)
APP_POD=$(kubectl get pod -l app=codimd -o jsonpath="{.items[0].metadata.name}" 2>/dev/null)

mkdir -p $BACKUP_DIR

# --- A. 備份資料庫 ---
echo "--- 正在備份資料庫... ---"
if kubectl exec $DB_POD -- pg_dump -U codimd codimd | gzip > $DB_BACKUP_FILE; then
    echo "✅ 資料庫備份成功: $(basename $DB_BACKUP_FILE) ($(stat -c%s $DB_BACKUP_FILE) bytes)"
else
    echo "❌ 資料庫備份失敗！"
    exit 1
fi

# --- B. 備份上傳檔案 (Uploads) ---
echo "--- 正在備份上傳圖片 (Uploads)... ---"
# 使用 tar 打包 Pod 內的 uploads 資料夾，並傳回本機
if kubectl exec $APP_POD -- tar zcf - -C /home/hackmd/app/public uploads > $UPLOADS_BACKUP_FILE; then
    echo "✅ 圖片備份成功: $(basename $UPLOADS_BACKUP_FILE) ($(stat -c%s $UPLOADS_BACKUP_FILE) bytes)"
else
    echo "❌ 圖片備份失敗！"
    exit 1
fi

echo "--- ✨ 備份任務完成！ ---"
