church-api/upload_images.sh
Benjamin Slingo 0c06e159bb Initial commit: Church API Rust implementation
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.
2025-08-19 20:56:41 -04:00

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/"