#!/bin/bash

# Цагдаагийн Мэдэгдэл Систем - Өгөгдлийн Сан Бэкап Скрипт
# Police Notification System - Database Backup Script

# Өгөгдлийн сан холболтын параметрүүд
DB_HOST="localhost"
DB_USER="root"
DB_PASSWORD=""  # .env-ээс авах эсвэл заах
DB_NAME="police_notification_db"
BACKUP_DIR="backups"
DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/police_notification_db_${DATE}.sql"

# Аргумент авах
if [ $# -gt 0 ]; then
    if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
        echo "Цагдаагийн Мэдэгдэл Систем - Өгөгдлийн Сан Бэкап"
        echo ""
        echo "Ашигла:"
        echo "  ./backup-db.sh                    # Бэкап хийх"
        echo "  ./backup-db.sh -restore FILE      # Сэргээх"
        echo "  ./backup-db.sh -list              # Бэкап жагсаалт"
        echo "  ./backup-db.sh -clean             # Хуучин бэкап устгах"
        echo ""
        exit 0
    elif [ "$1" == "-restore" ] && [ -f "$2" ]; then
        echo "Өгөгдлийн сан сэргээлтийг үргэлжүүлэх: $2"
        read -p "Баталгаажуулалт (y/n): " confirm
        if [ "$confirm" == "y" ]; then
            mysql -h $DB_HOST -u $DB_USER -p$DB_PASSWORD $DB_NAME < "$2"
            echo "✓ Өгөгдлийн сан сэргээлээ"
        fi
        exit 0
    elif [ "$1" == "-list" ]; then
        echo "Боломжтой бэкап файлууд:"
        ls -lhS $BACKUP_DIR/*.sql 2>/dev/null || echo "Бэкап байхгүй"
        exit 0
    elif [ "$1" == "-clean" ]; then
        echo "7 өдөрөөс хуучин бэкап устгах..."
        find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
        echo "✓ Хуучин бэкап устгалээ"
        exit 0
    fi
fi

# Бэкап директори үүсгэх
mkdir -p $BACKUP_DIR

# Бэкап файл үүсгэх
echo "Өгөгдлийн сан бэкап эхлүүлж байна..."
echo "Сэрвэр: $DB_HOST"
echo "Өгөгдлийн сан: $DB_NAME"
echo "Бэкап файл: $BACKUP_FILE"
echo ""

mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASSWORD \
    --single-transaction \
    --quick \
    --lock-tables=false \
    --routines \
    --events \
    --triggers \
    $DB_NAME > "$BACKUP_FILE"

if [ $? -eq 0 ]; then
    SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
    echo "✓ Бэкап амжилттай хийгдээд: $BACKUP_FILE ($SIZE)"
    
    # Бэкапийг нэмэлт хадгалах (сонголттой)
    # Жнь: AWS S3, Google Drive, гэх мэт
    
    # 7 өдөрөөс хуучин бэкапийг автоматаар устгах
    echo "Хуучин бэкап файлууд үйлийн хяналтаар..."
    find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
    echo "✓ Хуучин бэкап дээр хяналтаар"
else
    echo "✗ Бэкап амжилтгүй болло"
    exit 1
fi

# Сэрвэлжилтийн лог оруулах (опционал)
if [ -w "logs/backup.log" ]; then
    echo "[$(date)] Бэкап: $BACKUP_FILE - Хэмжээ: $SIZE" >> logs/backup.log
fi
