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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user