From 115d08a245e27d1e05469cb877f1a00c7c10e0ec Mon Sep 17 00:00:00 2001 From: John Costa Date: Sun, 14 Sep 2025 17:45:30 +0100 Subject: [PATCH] going back to how it was --- backend/images/handler.go | 37 +++++++++++++++++++++++++++++++++++++ backend/models/image.go | 22 ++++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/backend/images/handler.go b/backend/images/handler.go index 3aaa199..5eda4cf 100644 --- a/backend/images/handler.go +++ b/backend/images/handler.go @@ -176,6 +176,43 @@ func (h *ImageHandler) deleteImage(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) } +func (h *ImageHandler) reprocessImage(w http.ResponseWriter, r *http.Request) { + stringImageID := chi.URLParam(r, "image-id") + imageID, err := uuid.Parse(stringImageID) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + return + } + + ctx := r.Context() + + userID, err := middleware.GetUserID(ctx, h.logger, w) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + return + } + + isAuthorized := h.imageModel.IsUserAuthorized(ctx, imageID, userID) + if !isAuthorized { + w.WriteHeader(http.StatusUnauthorized) + return + } + + imageToProcessID, err := h.imageModel.GetImageToProcessID(ctx, imageID) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + return + } + + err = h.imageModel.SetNotStarted(ctx, imageToProcessID) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + return + } + + w.WriteHeader(http.StatusOK) +} + func (h *ImageHandler) CreateRoutes(r chi.Router) { h.logger.Info("Mounting image router") diff --git a/backend/models/image.go b/backend/models/image.go index edf27b4..1b9af29 100644 --- a/backend/models/image.go +++ b/backend/models/image.go @@ -160,6 +160,28 @@ func (m ImageModel) FinishProcessing(ctx context.Context, imageId uuid.UUID) (mo return userImage, err } +func (m ImageModel) GetImageToProcessID(ctx context.Context, imageID uuid.UUID) (uuid.UUID, error) { + getImageToProcessIDStmt := UserImagesToProcess. + SELECT(UserImagesToProcess.ID). + WHERE(UserImagesToProcess.ImageID.EQ(UUID(imageID))) + + imageToProcess := model.UserImagesToProcess{} + err := getImageToProcessIDStmt.QueryContext(ctx, m.dbPool, &imageToProcess) + + return imageToProcess.ID, err +} + +func (m ImageModel) SetNotStarted(ctx context.Context, processingImageId uuid.UUID) error { + startProcessingStmt := UserImagesToProcess. + UPDATE(UserImagesToProcess.Status). + SET(model.Progress_NotStarted). + WHERE(UserImagesToProcess.ID.EQ(UUID(processingImageId))) + + _, err := startProcessingStmt.ExecContext(ctx, m.dbPool) + + return err +} + func (m ImageModel) StartProcessing(ctx context.Context, processingImageId uuid.UUID) error { startProcessingStmt := UserImagesToProcess. UPDATE(UserImagesToProcess.Status).