#!/usr/bin/env bash
set -euo pipefail

: "${DB_HOST:?DB_HOST is required}"
: "${DB_PORT:=3306}"
: "${DB_DATABASE:?DB_DATABASE is required}"
: "${DB_USERNAME:?DB_USERNAME is required}"
: "${DB_PASSWORD:?DB_PASSWORD is required}"

BACKUP_DIR="${BACKUP_DIR:-storage/app/backups}"
mkdir -p "$BACKUP_DIR"
STAMP="$(date -u +%Y%m%d_%H%M%S)"
OUTPUT="$BACKUP_DIR/${DB_DATABASE}_${STAMP}.sql.gz"

MYSQL_PWD="$DB_PASSWORD" mysqldump \
  --host="$DB_HOST" \
  --port="$DB_PORT" \
  --user="$DB_USERNAME" \
  --single-transaction \
  --routines \
  --triggers \
  --hex-blob \
  "$DB_DATABASE" | gzip -9 > "$OUTPUT"

find "$BACKUP_DIR" -type f -name '*.sql.gz' -mtime +14 -delete
printf 'Backup created: %s\n' "$OUTPUT"
