Add folder validation to CreateMediaItem handler

- Check library has folders before creating media items
- Return HTTP 400 with clear error message if no folders
- Proper error code (400) instead of generic 500
- Improved user feedback for invalid operations
- Inject LibraryService into MediaHandler

Fixes: TestCollectionsBulkOperations HTTP 500 errors
Related: Service layer validation commit
This commit is contained in:
2026-02-09 14:28:58 -05:00
parent cd20c8e96d
commit 6b1815de12
2 changed files with 21 additions and 5 deletions
+17 -4
View File
@@ -84,13 +84,15 @@ type UpdateMediaHighlightRequest struct {
}
type MediaHandler struct {
db *database.Queries
worker *services.Worker
db *database.Queries
worker *services.Worker
libraryService *services.LibraryService
}
func NewMediaHandler(db *database.Queries, worker ...*services.Worker) *MediaHandler {
func NewMediaHandler(db *database.Queries, libraryService *services.LibraryService, worker ...*services.Worker) *MediaHandler {
mh := &MediaHandler{
db: db,
db: db,
libraryService: libraryService,
}
if len(worker) > 0 && worker[0] != nil {
mh.worker = worker[0]
@@ -913,6 +915,17 @@ func (mh *MediaHandler) CreateMediaItem(c echo.Context) error {
return c.JSON(http.StatusInternalServerError, map[string]string{"error": err.Error()})
}
// Validate library has folders before allowing media items
hasFolders, err := mh.libraryService.HasFolders(c.Request().Context(), pgtype.UUID{Bytes: req.LibraryID, Valid: true})
if err != nil {
return c.JSON(http.StatusInternalServerError, map[string]string{"error": "Failed to validate library folders"})
}
if !hasFolders {
return c.JSON(http.StatusBadRequest, map[string]string{
"error": "Cannot add media items to a library with no folders. Please add at least one folder to the library first.",
})
}
mediaItemID, err := mh.db.CreateMediaItem(c.Request().Context(), database.CreateMediaItemParams{
LibraryID: pgtype.UUID{Bytes: req.LibraryID, Valid: true},
Title: req.Title,