
Complete church management system with bulletin management, media processing, live streaming integration, and web interface. Includes authentication, email notifications, database migrations, and comprehensive test suite.
118 lines
3.9 KiB
Bash
Executable file
118 lines
3.9 KiB
Bash
Executable file
#!/usr/bin/env fish
|
|
|
|
echo "🖼️ DIRECT FILE COPY + PROPER UPDATE"
|
|
echo "==================================="
|
|
|
|
set API_BASE "https://api.rockvilletollandsda.church/api"
|
|
set STORAGE_PATH "/media/archive/pocketbase-temp/pocketbase/pb_data/storage/2tz9osuik53a0yh"
|
|
set OLD_PB_BASE "https://pocketbase.rockvilletollandsda.church/api"
|
|
set UPLOAD_DIR "/opt/rtsda/church-api/uploads/events"
|
|
|
|
# Get token
|
|
set AUTH_RESPONSE (curl -s -X POST $API_BASE/auth/login \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"username": "admin", "password": "Alright8-Reapply-Shrewdly-Platter-Important-Keenness-Banking-Streak-Tactile"}')
|
|
|
|
set JWT_TOKEN (echo $AUTH_RESPONSE | jq -r '.data.token')
|
|
echo "✅ Got token"
|
|
|
|
# Get events for matching
|
|
set NEW_EVENTS (curl -s -H "Authorization: Bearer $JWT_TOKEN" "$API_BASE/events?perPage=500")
|
|
echo $NEW_EVENTS | jq '.data.items | map({id, title})' > new_events.json
|
|
|
|
set OLD_EVENTS (curl -s "$OLD_PB_BASE/collections/events/records?perPage=500")
|
|
echo $OLD_EVENTS | jq '.items | map({id, title})' > old_events.json
|
|
|
|
set uploaded 0
|
|
set failed 0
|
|
|
|
for event_dir in (find $STORAGE_PATH -mindepth 1 -maxdepth 1 -type d -name '[a-z0-9]*')
|
|
set old_id (basename $event_dir)
|
|
set image_file (find $event_dir -maxdepth 1 -name "*.webp" -type f | head -1)
|
|
|
|
if test -z "$image_file"
|
|
continue
|
|
end
|
|
|
|
# Get old event and find new match
|
|
set old_event (cat old_events.json | jq --arg id "$old_id" '.[] | select(.id == $id)')
|
|
if test -z "$old_event"
|
|
continue
|
|
end
|
|
|
|
set title (echo $old_event | jq -r '.title')
|
|
set new_event (cat new_events.json | jq --arg title "$title" '.[] | select(.title == $title)')
|
|
|
|
if test -z "$new_event"
|
|
echo "❌ No match for: $title"
|
|
continue
|
|
end
|
|
|
|
set new_id (echo $new_event | jq -r '.id')
|
|
set filename (basename $image_file)
|
|
set new_filename "$new_id-$filename"
|
|
set image_path "uploads/events/$new_filename"
|
|
|
|
echo "📤 Processing: $title"
|
|
|
|
# Copy file to upload directory
|
|
cp "$image_file" "$UPLOAD_DIR/$new_filename"
|
|
|
|
if test $status -eq 0
|
|
echo "✅ File copied: $new_filename"
|
|
|
|
# Get current event data first
|
|
set current_event (curl -s -H "Authorization: Bearer $JWT_TOKEN" \
|
|
"$API_BASE/events/$new_id")
|
|
|
|
# Extract current event data and add image path
|
|
set event_data (echo $current_event | jq --arg img "$image_path" \
|
|
'.data | {
|
|
title: .title,
|
|
description: .description,
|
|
start_time: .start_time,
|
|
end_time: .end_time,
|
|
location: .location,
|
|
location_url: .location_url,
|
|
category: .category,
|
|
recurring_type: .recurring_type,
|
|
is_featured: .is_featured,
|
|
image: $img
|
|
}')
|
|
|
|
# Update event with complete data
|
|
set update_response (curl -s -X PUT \
|
|
-H "Authorization: Bearer $JWT_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$event_data" \
|
|
"$API_BASE/admin/events/$new_id")
|
|
|
|
set success (echo $update_response | jq -r '.success // false')
|
|
|
|
if test "$success" = "true"
|
|
echo "✅ SUCCESS: $title"
|
|
set uploaded (math $uploaded + 1)
|
|
else
|
|
echo "❌ DB UPDATE FAILED: $title"
|
|
echo " Response: "(echo $update_response)
|
|
set failed (math $failed + 1)
|
|
end
|
|
else
|
|
echo "❌ FILE COPY FAILED: $title"
|
|
set failed (math $failed + 1)
|
|
end
|
|
|
|
echo "---"
|
|
sleep 0.1
|
|
end
|
|
|
|
rm -f new_events.json old_events.json
|
|
|
|
echo ""
|
|
echo "🎉 FINAL RESULTS!"
|
|
echo "================="
|
|
echo "✅ Successfully uploaded: $uploaded images"
|
|
echo "❌ Failed uploads: $failed images"
|
|
echo ""
|
|
echo "🌐 Images should be accessible at: https://api.rockvilletollandsda.church/uploads/events/"
|