#!/bin/bash
# daily_maintenance.sh

set -e

echo "🛠️  شروع نگهداری روزانه سیستم..."

# متغیرهای محیطی
source .env

# تاریخ امروز
TODAY=$(date +%Y-%m-%d)
BACKUP_DIR="./backups"
LOG_DIR="./logs"

# 1. پشتیبان از پایگاه داده
echo "📦 ایجاد پشتیبان از پایگاه داده..."
docker-compose exec mysql mysqldump \
    -u "$DB_USER" \
    -p"$DB_PASS" \
    "$DB_NAME" \
    > "$BACKUP_DIR/daily_backup_$TODAY.sql"

# فشرده‌سازی
gzip "$BACKUP_DIR/daily_backup_$TODAY.sql"

# حذف پشتیبان‌های قدیمی (بیش از 7 روز)
find "$BACKUP_DIR" -name "daily_backup_*.sql.gz" -mtime +7 -delete

# 2. پاکسازی لاگ‌های قدیمی
echo "🧹 پاکسازی لاگ‌های قدیمی..."
find "$LOG_DIR" -name "*.log" -mtime +30 -delete
find "$LOG_DIR" -name "*.gz" -mtime +90 -delete

# 3. به‌روزرسانی counter استفاده روزانه کاربران
echo "🔄 بازنشانی counter استفاده روزانه..."
docker-compose exec backend python -c "
from app.database.connection import get_db
from app.database.models import User
from sqlalchemy.orm import Session

db: Session = next(get_db())
db.query(User).update({User.used_today: 0})
db.commit()
print('✓ استفاده روزانه کاربران بازنشانی شد')
"

# 4. بررسی سلامت سیستم
echo "🩺 بررسی سلامت سیستم..."

# بررسی وضعیت کانتینرها
if docker-compose ps | grep -q "Exit"; then
    echo "⚠️  برخی کانتینرها متوقف شده‌اند. تلاش برای راه‌اندازی مجدد..."
    docker-compose restart
fi

# بررسی فضای دیسک
DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$DISK_USAGE" -gt 80 ]; then
    echo "⚠️  هشدار: استفاده از دیسک به ${DISK_USAGE}% رسیده است"
fi

# 5. ارسال گزارش
echo "📧 ارسال گزارش..."
REPORT_FILE="/tmp/maintenance_report_$TODAY.txt"

cat > "$REPORT_FILE" << EOF
گزارش نگهداری روزانه - $TODAY

✅ عملیات انجام شده:
1. پشتیبان از پایگاه داده
2. پاکسازی لاگ‌های قدیمی
3. بازنشانی counter استفاده روزانه
4. بررسی سلامت سیستم

📊 وضعیت سیستم:
- فضای دیسک: ${DISK_USAGE}%
- تعداد پشتیبان‌ها: $(ls -1 "$BACKUP_DIR" | wc -l)
- حجم لاگ‌ها: $(du -sh "$LOG_DIR" | cut -f1)

🔄 سرویس‌ها:
$(docker-compose ps --format "table {{.Name}}\t{{.Status}}")

🕐 زمان اتمام: $(date)
EOF

# ارسال گزارش (مثال: از طریق curl به وب‌هوک)
if [ -n "$REPORT_WEBHOOK" ]; then
    curl -X POST "$REPORT_WEBHOOK" \
        -H "Content-Type: application/json" \
        -d "{\"text\": \"$(cat $REPORT_FILE | sed ':a;N;$!ba;s/\n/\\n/g')\"}"
fi

echo "🎉 نگهداری روزانه با موفقیت انجام شد!"