This commit is contained in:
gpatruno
2026-07-18 16:26:08 +02:00
parent 49c444e8b9
commit 2614d679c8
85 changed files with 8074 additions and 710 deletions
+9 -64
View File
@@ -1,67 +1,12 @@
#!/usr/bin/env bash
# Export local project SQLite DB (+ uploads) for backup / Docker import
# Usage:
# ./scripts/db-export.sh
# ./scripts/db-export.sh ./backups/my-backup
#
# Sources (local):
# server/prisma/dev.db (+ -wal / -shm if present)
# server/uploads/
#
# Restore into Docker with:
# ./scripts/db-import.sh ./backups/...
# Deprecated alias — use docker-db-export.sh on prod, or local-db-export.sh on your laptop.
# This wrapper keeps the old name for existing docs / muscle memory.
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"
LOCAL_DB="${LOCAL_DB:-$ROOT/server/prisma/dev.db}"
LOCAL_UPLOADS="${LOCAL_UPLOADS:-$ROOT/server/uploads}"
STAMP="$(date +%Y%m%d-%H%M%S)"
OUT="${1:-$ROOT/backups/casegambling-$STAMP}"
if [[ ! -f "$LOCAL_DB" ]]; then
echo "Error: local database not found: $LOCAL_DB" >&2
echo "Tip: run the app once or set LOCAL_DB=/path/to/dev.db" >&2
exit 1
DIR="$(cd "$(dirname "$0")" && pwd)"
if [[ -f "$DIR/../docker-compose.yml" ]] && command -v docker >/dev/null 2>&1 \
&& docker compose -f "$DIR/../docker-compose.yml" ps -q casegambling >/dev/null 2>&1; then
echo "Note: forwarding to docker-db-export.sh (Docker detected)." >&2
exec "$DIR/docker-db-export.sh" "$@"
fi
mkdir -p "$OUT"
echo "==> Exporting local database → $OUT/prod.db"
echo " source: $LOCAL_DB"
cp -f "$LOCAL_DB" "$OUT/prod.db"
# keep a copy under original name too (import accepts both)
cp -f "$LOCAL_DB" "$OUT/dev.db"
if [[ -f "${LOCAL_DB}-wal" ]]; then
cp -f "${LOCAL_DB}-wal" "$OUT/prod.db-wal"
cp -f "${LOCAL_DB}-wal" "$OUT/dev.db-wal"
fi
if [[ -f "${LOCAL_DB}-shm" ]]; then
cp -f "${LOCAL_DB}-shm" "$OUT/prod.db-shm"
cp -f "${LOCAL_DB}-shm" "$OUT/dev.db-shm"
fi
echo "==> Exporting local uploads → $OUT/uploads"
mkdir -p "$OUT/uploads"
if [[ -d "$LOCAL_UPLOADS" ]]; then
# copy contents; ignore empty/.gitkeep-only quietly
cp -a "$LOCAL_UPLOADS"/. "$OUT/uploads/" 2>/dev/null || true
else
echo " (no uploads dir at $LOCAL_UPLOADS)"
fi
{
echo "exported_at=$STAMP"
echo "source=local"
echo "local_db=$LOCAL_DB"
echo "local_uploads=$LOCAL_UPLOADS"
echo "database=prod.db"
echo "uploads=uploads/"
} > "$OUT/manifest.txt"
TAR="$OUT.tar.gz"
tar -czf "$TAR" -C "$(dirname "$OUT")" "$(basename "$OUT")"
echo "==> Archive: $TAR"
echo "==> Done. Import to Docker: ./scripts/db-import.sh $OUT"
echo "Note: forwarding to local-db-export.sh." >&2
exec "$DIR/local-db-export.sh" "$@"