reprocessing images now works

This commit is contained in:
2025-09-14 18:02:40 +01:00
parent 115d08a245
commit 176d2b0bd4
4 changed files with 68 additions and 32 deletions

View File

@@ -20,10 +20,14 @@ import (
)
type ImageHandler struct {
logger *log.Logger
imageModel models.ImageModel
userModel models.UserModel
logger *log.Logger
imageModel models.ImageModel
userModel models.UserModel
limitsManager limits.LimitsManagerMethods
processImage func(imageID uuid.UUID)
}
type ImagesReturn struct {
@@ -200,16 +204,30 @@ func (h *ImageHandler) reprocessImage(w http.ResponseWriter, r *http.Request) {
imageToProcessID, err := h.imageModel.GetImageToProcessID(ctx, imageID)
if err != nil {
h.logger.Error("get image to process", "err", err)
w.WriteHeader(http.StatusInternalServerError)
return
}
// The whole way in which I do this event driven stuff is stupid.
// It's so messy now
err = h.imageModel.DeleteUserImage(ctx, imageID)
if err != nil {
h.logger.Error("delete user image", "err", err)
w.WriteHeader(http.StatusInternalServerError)
return
}
err = h.imageModel.SetNotStarted(ctx, imageToProcessID)
if err != nil {
h.logger.Error("set not started", "err", err)
w.WriteHeader(http.StatusInternalServerError)
return
}
h.processImage(imageToProcessID)
w.WriteHeader(http.StatusOK)
}
@@ -226,11 +244,12 @@ func (h *ImageHandler) CreateRoutes(r chi.Router) {
r.Get("/", h.listImages)
r.Post("/{name}", middleware.WithLimit(h.logger, h.limitsManager.HasReachedImageLimit, h.uploadImage))
r.Patch("/{image-id}", h.reprocessImage)
r.Delete("/{image-id}", h.deleteImage)
})
}
func CreateImageHandler(db *sql.DB, limitsManager limits.LimitsManagerMethods) ImageHandler {
func CreateImageHandler(db *sql.DB, limitsManager limits.LimitsManagerMethods, processImage func(imageID uuid.UUID)) ImageHandler {
imageModel := models.NewImageModel(db)
userModel := models.NewUserModel(db)
logger := log.New(os.Stdout).WithPrefix("Images")
@@ -240,5 +259,6 @@ func CreateImageHandler(db *sql.DB, limitsManager limits.LimitsManagerMethods) I
imageModel: imageModel,
userModel: userModel,
limitsManager: limitsManager,
processImage: processImage,
}
}