updateweb

This commit is contained in:
Local Server
2025-12-24 00:13:23 -06:00
parent e4b3de4a46
commit 017c6376fc
88 changed files with 17866 additions and 1191 deletions

124
docs/UPLOAD_500_FIX.md Normal file
View File

@@ -0,0 +1,124 @@
# Upload 500 Error Fix - Complete
## Date: December 19, 2025
## Problem
File uploads were failing with HTTP 500 error:
```
POST http://localhost:5000/api/admin/upload 500 (Internal Server Error)
Error: "Failed to save uploaded files"
```
## Root Cause
### Backend Log Error
```
[error]: Database insert failed for file: {
"filename":"18498-1766201320693-912285946.jpg",
"error":"invalid input syntax for type integer: \"admin-default\""
}
```
### Database Type Mismatch
- `adminusers.id` = **TEXT** (value: `"admin-default"`)
- `uploads.uploaded_by` = **INTEGER**
- `media_folders.created_by` = **INTEGER**
When the upload route tried to insert `req.session.user.id` (`"admin-default"`) into the INTEGER column, PostgreSQL rejected it.
## Solution
### Database Schema Fix
Changed column types to match the `adminusers.id` type:
```sql
-- Fix uploads table
ALTER TABLE uploads ALTER COLUMN uploaded_by TYPE TEXT;
-- Fix media_folders table
ALTER TABLE media_folders ALTER COLUMN created_by TYPE TEXT;
```
### Verification
```
uploads.uploaded_by: integer → text ✅
media_folders.created_by: integer → text ✅
```
## Files Changed
### Database
-`uploads.uploaded_by`: INTEGER → TEXT
-`media_folders.created_by`: INTEGER → TEXT
### Migration File Created
-`backend/migrations/fix-uploaded-by-type.sql`
### Backend Code
- ✅ No changes needed (already using `req.session.user?.id`)
## Why This Happened
The original schema was designed expecting numeric user IDs, but the authentication system uses text-based IDs (`"admin-default"`). This type mismatch wasn't caught until file upload was tested.
## Testing
### Before Fix
```
❌ Upload fails with 500 error
❌ Database insert error
❌ Files uploaded to disk but not in database
❌ User sees "Upload failed" message
```
### After Fix
```
✅ Upload succeeds
✅ Database insert works
✅ Files tracked properly
✅ User sees success message
```
## Test Steps
1. Navigate to <http://localhost:5000/admin/media-library.html>
2. Click **"Upload Files"** button
3. Select one or more images (JPG, PNG, GIF, WebP)
4. Watch progress bar complete
5. See success alert: "Successfully uploaded X file(s)!"
6. Files appear in the media grid
## Related Tables Fixed
Both tables that reference user IDs:
- `uploads` - Tracks uploaded files
- `media_folders` - Tracks folder creators
Both now use TEXT to match `adminusers.id`.
## Migration Safety
The ALTER TABLE commands are safe because:
- ✅ No existing data (tables are new)
- ✅ TEXT can hold any INTEGER value
- ✅ No foreign key constraints broken
- ✅ Instant operation (no data conversion needed)
## Summary
**Upload functionality is now fully operational!**
The database schema mismatch between user IDs (TEXT) and foreign keys (INTEGER) has been resolved. All file uploads and folder creation operations will now work correctly with the text-based user IDs from the authentication system.