Spaces:
danilonovais
/
Running on CPU Upgrade

File size: 1,735 Bytes
caca973
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/env bash
set -euo pipefail

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
ENV_FILE="$ROOT_DIR/config/.env"

if [ -f "$ENV_FILE" ]; then
  # shellcheck disable=SC1090
  source "$ENV_FILE"
else
  echo "Env file not found at $ENV_FILE" >&2
  exit 1
fi

DATE_STAMP="$(date +%Y%m%d-%H%M%S)"
BACKUP_DIR_DB="$ROOT_DIR/backups/db"
BACKUP_DIR_WF="$ROOT_DIR/workflows/backup"
mkdir -p "$BACKUP_DIR_DB" "$BACKUP_DIR_WF"

echo "==> Backing up Supabase Postgres (SSL required)"
if [[ -z "${DB_POSTGRESDB_HOST:-}" || -z "${DB_POSTGRESDB_DATABASE:-}" || -z "${DB_POSTGRESDB_USER:-}" || -z "${DB_POSTGRESDB_PASSWORD:-}" ]]; then
  echo "Database env vars missing. Check config/.env" >&2
  exit 1
fi

export PGPASSWORD="$DB_POSTGRESDB_PASSWORD"
pg_dump \
  --host="$DB_POSTGRESDB_HOST" \
  --port="${DB_POSTGRESDB_PORT:-5432}" \
  --username="$DB_POSTGRESDB_USER" \
  --dbname="$DB_POSTGRESDB_DATABASE" \
  --format=plain \
  --no-owner \
  --no-privileges \
  --verbose \
  --sslmode=require \
  > "$BACKUP_DIR_DB/db-backup-$DATE_STAMP.sql"

echo "==> Exporting n8n workflows via API"
if [[ -z "${N8N_URL:-}" || -z "${N8N_API_KEY:-}" ]]; then
  echo "N8N_URL or N8N_API_KEY missing. Skipping workflows export." >&2
else
  # List workflows
  WF_LIST_JSON="$(curl -fsSL -H "X-N8N-API-KEY: $N8N_API_KEY" "$N8N_URL/rest/workflows")"
  echo "$WF_LIST_JSON" | jq -c '.data[]' | while read -r wf; do
    ID="$(echo "$wf" | jq -r '.id')"
    NAME="$(echo "$wf" | jq -r '.name' | tr ' /' '__')"
    echo "  - Exporting workflow $ID: $NAME"
    curl -fsSL -H "X-N8N-API-KEY: $N8N_API_KEY" \
      "$N8N_URL/rest/workflows/$ID" \
      | jq '.' > "$BACKUP_DIR_WF/${DATE_STAMP}-${ID}-${NAME}.json"
  done
fi

echo "==> Backup completed"