#!/bin/sh
# Daily MySQL backup for floosi.ma (run from a cPanel Cron Job). Keeps the last 30 days.
# Reads the DB credentials from the Laravel .env; output is gzip-compressed and readable
# only by your cPanel user.
set -eu
APP=${APP:-$HOME/floosi}
DEST=${DEST:-$HOME/floosi-backups}
umask 077
mkdir -p "$DEST"
get() { grep -E "^$1=" "$APP/.env" | head -1 | cut -d= -f2- | sed 's/^"//; s/"$//'; }
CNF=$(mktemp)
trap 'rm -f "$CNF"' EXIT
printf "[client]\nuser=%s\npassword=%s\nhost=%s\n" "$(get DB_USERNAME)" "$(get DB_PASSWORD)" "$(get DB_HOST)" > "$CNF"
mysqldump --defaults-extra-file="$CNF" --single-transaction --routines "$(get DB_DATABASE)" | gzip > "$DEST/floosi-$(date +%Y%m%d-%H%M).sql.gz"
tar -czf "$DEST/attachments-$(date +%Y%m%d).tgz" -C "$APP/storage/app" private 2>/dev/null || true
find "$DEST" -type f -mtime +30 -delete
