From 46a5549e53a7b79fd58faf880946eb6e6942290b Mon Sep 17 00:00:00 2001 From: Mo Tarbin Date: Thu, 28 Nov 2024 11:30:39 -0500 Subject: [PATCH] Update Priority as standalone endpoint --- internal/chore/handler.go | 24 ++++-------------------- internal/chore/repo/repository.go | 10 +++++++++- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/internal/chore/handler.go b/internal/chore/handler.go index d104576..2a646f5 100644 --- a/internal/chore/handler.go +++ b/internal/chore/handler.go @@ -1070,10 +1070,10 @@ func (h *Handler) ModifyHistory(c *gin.Context) { func (h *Handler) updatePriority(c *gin.Context) { type PriorityReq struct { - Priority *int `json:"priority" binding:"required,gt=-1"` + Priority *int `json:"priority" binding:"required,gt=-1,lt=5"` } - currrentUser, ok := auth.CurrentUser(c) + currentUser, ok := auth.CurrentUser(c) if !ok { c.JSON(500, gin.H{ "error": "Error getting current user", @@ -1099,23 +1099,7 @@ func (h *Handler) updatePriority(c *gin.Context) { return } - chore, err := h.choreRepo.GetChore(c, id) - if err != nil { - c.JSON(500, gin.H{ - "error": "Error getting chore", - }) - return - } - - if currrentUser.ID != chore.CreatedBy { - c.JSON(403, gin.H{ - "error": "You are not allowed to update this chore", - }) - return - } - - chore.Priority = *priorityReq.Priority - if err := h.choreRepo.UpsertChore(c, chore); err != nil { + if err := h.choreRepo.UpdateChorePriority(c, currentUser.ID, id, *priorityReq.Priority); err != nil { c.JSON(500, gin.H{ "error": "Error updating priority", }) @@ -1123,7 +1107,7 @@ func (h *Handler) updatePriority(c *gin.Context) { } c.JSON(200, gin.H{ - "res": chore, + "message": "Priority updated successfully", }) } diff --git a/internal/chore/repo/repository.go b/internal/chore/repo/repository.go index 3768fdf..bdd75ad 100644 --- a/internal/chore/repo/repository.go +++ b/internal/chore/repo/repository.go @@ -2,6 +2,7 @@ package chore import ( "context" + "errors" "fmt" "time" @@ -22,7 +23,14 @@ func NewChoreRepository(db *gorm.DB, cfg *config.Config) *ChoreRepository { func (r *ChoreRepository) UpsertChore(c context.Context, chore *chModel.Chore) error { return r.db.WithContext(c).Model(&chore).Save(chore).Error } - +func (r *ChoreRepository) UpdateChorePriority(c context.Context, userID int, choreID int, priority int) error { + var affectedRows int64 + r.db.WithContext(c).Model(&chModel.Chore{}).Where("id = ? and created_by = ?", choreID, userID).Update("priority", priority).Count(&affectedRows) + if affectedRows == 0 { + return errors.New("no rows affected") + } + return nil +} func (r *ChoreRepository) UpdateChores(c context.Context, chores []*chModel.Chore) error { return r.db.WithContext(c).Save(&chores).Error }