diff --git a/.gitea/workflows/version-and-release.yml b/.gitea/workflows/version-and-release.yml index 0a0fc30..ebd5f8a 100644 --- a/.gitea/workflows/version-and-release.yml +++ b/.gitea/workflows/version-and-release.yml @@ -34,26 +34,46 @@ jobs: - name: Detect changes and bump version id: version run: | + set -e # Exit on error + + echo "=== Debug Info ===" + echo "GitHub event before: ${{ github.event.before }}" + echo "GitHub SHA: ${{ github.sha }}" + echo "Current directory: $(pwd)" + echo "Git log (last 5): $(git log --oneline -5)" + # Get the commit range for changed files - if [ "${{ github.event.before }}" != "0000000000000000000000000000000000000000" ]; then + if [ "${{ github.event.before }}" != "0000000000000000000000000000000000000000" ] && [ "${{ github.event.before }}" != "" ]; then COMMIT_RANGE="${{ github.event.before }}..${{ github.sha }}" + echo "Using commit range: $COMMIT_RANGE" + CHANGED_FILES=$(git diff --name-only $COMMIT_RANGE || echo "") else - # First commit, check all files - COMMIT_RANGE="${{ github.sha }}" + # First commit or no previous commit, check against HEAD~1 if it exists + if git rev-parse HEAD~1 >/dev/null 2>&1; then + COMMIT_RANGE="HEAD~1..HEAD" + echo "Using commit range: $COMMIT_RANGE" + CHANGED_FILES=$(git diff --name-only $COMMIT_RANGE || echo "") + else + echo "First commit detected, checking all files" + CHANGED_FILES=$(git ls-files) + fi fi - # Check what changed - BACKEND_CHANGED=$(git diff --name-only $COMMIT_RANGE | grep -E '^backend/' | wc -l) - FRONTEND_CHANGED=$(git diff --name-only $COMMIT_RANGE | grep -E '^frontend/' | wc -l) - ROOT_CHANGED=$(git diff --name-only $COMMIT_RANGE | grep -E '^(package\.json|docker-compose|Dockerfile|scripts/)' | wc -l) + echo "Changed files:" + echo "$CHANGED_FILES" + + # Check what changed (using echo to pipe to grep to avoid grep exit codes) + BACKEND_CHANGED=$(echo "$CHANGED_FILES" | grep -c '^backend/' || echo "0") + FRONTEND_CHANGED=$(echo "$CHANGED_FILES" | grep -c '^frontend/' || echo "0") + ROOT_CHANGED=$(echo "$CHANGED_FILES" | grep -c -E '^(package\.json|docker-compose|Dockerfile|scripts/)' || echo "0") echo "Backend files changed: $BACKEND_CHANGED" echo "Frontend files changed: $FRONTEND_CHANGED" echo "Root files changed: $ROOT_CHANGED" # Get current versions - BACKEND_VERSION=$(node -p "require('./backend/package.json').version") - FRONTEND_VERSION=$(node -p "require('./frontend/package.json').version") + BACKEND_VERSION=$(node -p "require('./backend/package.json').version" 2>/dev/null || echo "1.0.0") + FRONTEND_VERSION=$(node -p "require('./frontend/package.json').version" 2>/dev/null || echo "1.0.0") echo "Current backend version: $BACKEND_VERSION" echo "Current frontend version: $FRONTEND_VERSION" @@ -61,15 +81,16 @@ jobs: # Determine what to update based on changes BACKEND_UPDATE=false FRONTEND_UPDATE=false - COMPONENT_CHANGED="" + COMPONENT_CHANGED="none" - if [ $ROOT_CHANGED -gt 0 ]; then + if [ "$ROOT_CHANGED" -gt 0 ]; then # Root changes affect both components BACKEND_UPDATE=true FRONTEND_UPDATE=true COMPONENT_CHANGED="both" SOURCE_VERSION=$BACKEND_VERSION - elif [ $BACKEND_CHANGED -gt 0 ] && [ $FRONTEND_CHANGED -gt 0 ]; then + echo "Root changes detected - updating both components" + elif [ "$BACKEND_CHANGED" -gt 0 ] && [ "$FRONTEND_CHANGED" -gt 0 ]; then # Both components changed BACKEND_UPDATE=true FRONTEND_UPDATE=true @@ -80,20 +101,24 @@ jobs: else SOURCE_VERSION=$FRONTEND_VERSION fi - elif [ $BACKEND_CHANGED -gt 0 ]; then + echo "Both backend and frontend changed - updating both" + elif [ "$BACKEND_CHANGED" -gt 0 ]; then # Only backend changed BACKEND_UPDATE=true COMPONENT_CHANGED="backend" SOURCE_VERSION=$BACKEND_VERSION - elif [ $FRONTEND_CHANGED -gt 0 ]; then + echo "Only backend changed - updating backend" + elif [ "$FRONTEND_CHANGED" -gt 0 ]; then # Only frontend changed FRONTEND_UPDATE=true COMPONENT_CHANGED="frontend" SOURCE_VERSION=$FRONTEND_VERSION + echo "Only frontend changed - updating frontend" else echo "No relevant changes detected" echo "version_changed=false" >> $GITHUB_OUTPUT echo "component_changed=none" >> $GITHUB_OUTPUT + echo "new_version=" >> $GITHUB_OUTPUT exit 0 fi @@ -130,7 +155,7 @@ jobs: fi # Check if there are changes to commit - if [[ -n $(git status -s) ]]; then + if [[ -n $(git status --porcelain) ]]; then echo "version_changed=true" >> $GITHUB_OUTPUT else echo "version_changed=false" >> $GITHUB_OUTPUT diff --git a/backend/src/routes/adminEvents.js b/backend/src/routes/adminEvents.js index fbc93cd..8d41ad5 100644 --- a/backend/src/routes/adminEvents.js +++ b/backend/src/routes/adminEvents.js @@ -395,19 +395,22 @@ router.delete('/:id', adminAuth, async (req, res) => { // Start a transaction to ensure all deletions succeed or fail together await db.transaction(async (trx) => { - // 1. Delete access logs + // 1. Delete activity logs (audit trail) + await trx('activity_logs').where('event_id', id).del(); + + // 2. Delete access logs await trx('access_logs').where('event_id', id).del(); - // 2. Delete email queue entries + // 3. Delete email queue entries await trx('email_queue').where('event_id', id).del(); - // 3. Delete photos (this will also handle hero_photo_id foreign key) + // 4. Delete photos (this will also handle hero_photo_id foreign key) await trx('photos').where('event_id', id).del(); - // 4. Delete categories (photo_categories has CASCADE delete for event_id) + // 5. Delete categories (photo_categories has CASCADE delete for event_id) await trx('photo_categories').where('event_id', id).del(); - // 5. Finally delete the event + // 6. Finally delete the event await trx('events').where('id', id).del(); // Delete event folder from storage if it exists