wekan/docs/Databases/Migrations/verify-migrations.sh

140 lines
4.2 KiB
Bash
Raw Normal View History

#!/bin/bash
# Verification script for WeKan migration system improvements
# This script checks that all 13 migrations have proper implementations
echo "=========================================="
echo "WeKan Migration System Verification Report"
echo "=========================================="
echo ""
FILE="server/cronMigrationManager.js"
# Check 1: Default case changed to false
echo "✓ Check 1: Default case in isMigrationNeeded() should return false"
if grep -q "default:" "$FILE" && grep -A 1 "default:" "$FILE" | grep -q "return false"; then
echo " PASS: Default case returns false"
else
echo " FAIL: Default case may not return false"
fi
echo ""
# Check 2: All 13 migrations have case statements
MIGRATIONS=(
"lowercase-board-permission"
"change-attachments-type-for-non-images"
"card-covers"
"use-css-class-for-boards-colors"
"denormalize-star-number-per-board"
"add-member-isactive-field"
"ensure-valid-swimlane-ids"
"add-swimlanes"
"add-checklist-items"
"add-card-types"
"migrate-attachments-collectionFS-to-ostrioFiles"
"migrate-avatars-collectionFS-to-ostrioFiles"
"migrate-lists-to-per-swimlane"
)
echo "✓ Check 2: All 13 migrations have isMigrationNeeded() checks"
missing=0
for migration in "${MIGRATIONS[@]}"; do
if grep -q "'$migration'" "$FILE"; then
echo "$migration"
else
echo "$migration - MISSING"
((missing++))
fi
done
if [ $missing -eq 0 ]; then
echo " PASS: All 13 migrations have checks"
else
echo " FAIL: $missing migrations are missing"
fi
echo ""
# Check 3: All migrations have execute handlers
echo "✓ Check 3: All migrations have execute() handlers"
execute_methods=(
"executeDenormalizeStarCount"
"executeEnsureValidSwimlaneIds"
"executeLowercasePermission"
"executeComprehensiveBoardMigration"
"executeAttachmentTypeStandardization"
"executeCardCoversMigration"
"executeMemberActivityMigration"
"executeAddSwimlanesIdMigration"
"executeAddCardTypesMigration"
"executeAttachmentMigration"
"executeAvatarMigration"
"executeBoardColorMigration"
"executeChecklistItemsMigration"
)
missing_methods=0
for method in "${execute_methods[@]}"; do
if grep -q "async $method" "$FILE"; then
echo "$method()"
else
echo "$method() - MISSING"
((missing_methods++))
fi
done
if [ $missing_methods -eq 0 ]; then
echo " PASS: All execute methods exist"
else
echo " FAIL: $missing_methods execute methods are missing"
fi
echo ""
# Check 4: Checklists model is imported
echo "✓ Check 4: Checklists model is imported"
if grep -q "import Checklists from" "$FILE"; then
echo " PASS: Checklists imported"
else
echo " FAIL: Checklists not imported"
fi
echo ""
# Check 5: No simulated execution for unknown migrations
echo "✓ Check 5: No simulated execution (removed fallback)"
if ! grep -q "Simulate step execution with progress updates for other migrations" "$FILE"; then
echo " PASS: Simulated execution removed"
else
echo " WARN: Old simulation code may still exist"
fi
echo ""
# Check 6: Real implementations (sample check)
echo "✓ Check 6: Sample real implementations (checking for database queries)"
implementations=0
if grep -q "Boards.find({" "$FILE"; then
((implementations++))
echo " ✓ Real Boards.find() queries found"
fi
if grep -q "Cards.find({" "$FILE"; then
((implementations++))
echo " ✓ Real Cards.find() queries found"
fi
if grep -q "Users.find({" "$FILE"; then
((implementations++))
echo " ✓ Real Users.find() queries found"
fi
if grep -q "Checklists.find({" "$FILE"; then
((implementations++))
echo " ✓ Real Checklists.find() queries found"
fi
echo " PASS: $implementations real database implementations found"
echo ""
echo "=========================================="
echo "Summary: All migration improvements applied!"
echo "=========================================="
echo ""
echo "Next steps:"
echo "1. Test with fresh WeKan installation"
echo "2. Verify no migrations run (all marked 'not needed')"
echo "3. Test with old database with legacy data"
echo "4. Verify migrations detect and run with real progress"
echo ""