diff --git a/.env b/.env index df37cc78..7523ee9f 100644 --- a/.env +++ b/.env @@ -33,3 +33,4 @@ PROJECT_NAME=klz-cables TRAEFIK_HOST=klz.localhost DIRECTUS_HOST=cms.klz.localhost GATEKEEPER_PASSWORD=klz2026 +COOKIE_DOMAIN=localhost diff --git a/cookies.txt b/cookies.txt new file mode 100644 index 00000000..c31d9899 --- /dev/null +++ b/cookies.txt @@ -0,0 +1,4 @@ +# Netscape HTTP Cookie File +# https://curl.se/docs/http-cookies.html +# This file was generated by libcurl! Edit at your own risk. + diff --git a/scripts/sync-directus.sh b/scripts/sync-directus.sh index 61452594..2be79ca3 100755 --- a/scripts/sync-directus.sh +++ b/scripts/sync-directus.sh @@ -36,6 +36,8 @@ case $ENV in ;; production) PROJECT_NAME="klz-cables-prod" + # Fallback to older project name if prod-specific one isn't found later in the script + OLD_PROJECT_NAME="klz-cablescom" ENV_FILE=".env.prod" ;; *) @@ -58,6 +60,7 @@ if [ "$ACTION" == "push" ]; then # 1. DB Dump echo "๐Ÿ“ฆ Dumping local database..." + # Note: we use --no-owner --no-privileges to ensure restore works on remote with different user setup docker exec "$LOCAL_DB_CONTAINER" pg_dump -U "$DB_USER" --clean --if-exists --no-owner --no-privileges "$DB_NAME" > dump.sql # 2. Upload Dump @@ -67,10 +70,21 @@ if [ "$ACTION" == "push" ]; then # 3. Restore on Remote echo "๐Ÿ”„ Restoring dump on $ENV..." REMOTE_DB_CONTAINER=$(ssh "$REMOTE_HOST" "cd $REMOTE_DIR && docker compose -p $PROJECT_NAME ps -q directus-db") + if [ -z "$REMOTE_DB_CONTAINER" ] && [ -n "$OLD_PROJECT_NAME" ]; then + echo "โš ๏ธ $PROJECT_NAME not found, trying fallback $OLD_PROJECT_NAME..." + REMOTE_DB_CONTAINER=$(ssh "$REMOTE_HOST" "cd $REMOTE_DIR && docker compose -p $OLD_PROJECT_NAME ps -q directus-db") + fi + if [ -z "$REMOTE_DB_CONTAINER" ]; then echo "โŒ Remote $ENV-db container not found!" exit 1 fi + + # Wipe remote DB clean before restore to avoid constraint errors + echo "๐Ÿงน Wiping remote database schema..." + ssh "$REMOTE_HOST" "docker exec $REMOTE_DB_CONTAINER psql -U $DB_USER $DB_NAME -c 'DROP SCHEMA public CASCADE; CREATE SCHEMA public;'" + + echo "โšก Restoring database..." ssh "$REMOTE_HOST" "docker exec -i $REMOTE_DB_CONTAINER psql -U $DB_USER $DB_NAME < $REMOTE_DIR/dump.sql" # 4. Sync Uploads @@ -91,6 +105,11 @@ elif [ "$ACTION" == "pull" ]; then # 1. DB Dump on Remote echo "๐Ÿ“ฆ Dumping remote database ($ENV)..." REMOTE_DB_CONTAINER=$(ssh "$REMOTE_HOST" "cd $REMOTE_DIR && docker compose -p $PROJECT_NAME ps -q directus-db") + if [ -z "$REMOTE_DB_CONTAINER" ] && [ -n "$OLD_PROJECT_NAME" ]; then + echo "โš ๏ธ $PROJECT_NAME not found, trying fallback $OLD_PROJECT_NAME..." + REMOTE_DB_CONTAINER=$(ssh "$REMOTE_HOST" "cd $REMOTE_DIR && docker compose -p $OLD_PROJECT_NAME ps -q directus-db") + fi + if [ -z "$REMOTE_DB_CONTAINER" ]; then echo "โŒ Remote $ENV-db container not found!" exit 1 @@ -101,8 +120,11 @@ elif [ "$ACTION" == "pull" ]; then echo "๐Ÿ“ฅ Downloading dump..." scp "$REMOTE_HOST:$REMOTE_DIR/dump.sql" dump.sql - # 3. Restore Locally - echo "๐Ÿ”„ Restoring dump locally..." + # Wipe local DB clean before restore to avoid constraint errors + echo "๐Ÿงน Wiping local database schema..." + docker exec "$LOCAL_DB_CONTAINER" psql -U "$DB_USER" "$DB_NAME" -c 'DROP SCHEMA public CASCADE; CREATE SCHEMA public;' + + echo "โšก Restoring database locally..." docker exec -i "$LOCAL_DB_CONTAINER" psql -U "$DB_USER" "$DB_NAME" < dump.sql # 4. Sync Uploads