Skip to content

Commit

Permalink
feat: user handler update
Browse files Browse the repository at this point in the history
  • Loading branch information
bookpanda committed Jan 8, 2024
1 parent 6e11f07 commit d2d291c
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 9 deletions.
58 changes: 49 additions & 9 deletions src/app/handler/user/user.handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@ package user

import (
"net/http"
"strings"

"github.com/isd-sgcu/johnjud-gateway/src/app/constant"
"github.com/isd-sgcu/johnjud-gateway/src/app/dto"
"github.com/isd-sgcu/johnjud-gateway/src/app/router"
"github.com/isd-sgcu/johnjud-gateway/src/app/validator"
userconst "github.com/isd-sgcu/johnjud-gateway/src/constant/user"
"github.com/isd-sgcu/johnjud-gateway/src/pkg/service/user"
)

Expand Down Expand Up @@ -33,9 +36,9 @@ func NewHandler(service user.Service, validate validator.IDtoValidator) *Handler
func (h *Handler) FindOne(c *router.FiberCtx) {
id, err := c.ID()
if err != nil {
c.JSON(http.StatusInternalServerError, dto.ResponseErr{
StatusCode: http.StatusInternalServerError,
Message: "Invalid ID",
c.JSON(http.StatusBadRequest, dto.ResponseErr{
StatusCode: http.StatusBadRequest,
Message: err.Error(),
Data: nil,
})
return
Expand All @@ -47,27 +50,64 @@ func (h *Handler) FindOne(c *router.FiberCtx) {
return
}

c.JSON(http.StatusCreated, user)
c.JSON(http.StatusCreated, dto.ResponseSuccess{
StatusCode: http.StatusOK,
Message: userconst.FindOneUserSuccessMessage,
Data: user,
})
return
}

// Update is a function that updates user in database
// @Summary updates user
// @Description Returns the data of user if successfully
// @Param update body dto.UpdateUserRequest true "update user dto"
// @Tags auth
// @Accept json
// @Produce json
// @Success 201 {object} dto.User
// @Failure 400 {object} dto.ResponseBadRequestErr "Invalid request body"
// @Failure 500 {object} dto.ResponseInternalErr "Internal service error"
// @Failure 503 {object} dto.ResponseServiceDownErr "Service is down"
// @Router /v1/users [put]
func (h *Handler) Update(c *router.FiberCtx) {
usrId := c.UserID()

usrDto := dto.UpdateUserRequest{}
request := &dto.UpdateUserRequest{}

err := c.Bind(&usrDto)
err := c.Bind(request)
if err != nil {
c.JSON(http.StatusBadRequest, err)
c.JSON(http.StatusBadRequest, dto.ResponseErr{
StatusCode: http.StatusBadRequest,
Message: constant.BindingRequestErrorMessage + err.Error(),
Data: nil,
})
return
}

if err := h.validate.Validate(request); err != nil {
var errorMessage []string
for _, reqErr := range err {
errorMessage = append(errorMessage, reqErr.Message)
}
c.JSON(http.StatusBadRequest, dto.ResponseErr{
StatusCode: http.StatusBadRequest,
Message: constant.InvalidRequestBodyMessage + strings.Join(errorMessage, ", "),
Data: nil,
})
return
}

user, errRes := h.service.Update(usrId, &usrDto)
user, errRes := h.service.Update(usrId, request)
if errRes != nil {
c.JSON(errRes.StatusCode, errRes)
return
}

c.JSON(http.StatusOK, user)
c.JSON(http.StatusOK, dto.ResponseSuccess{
StatusCode: http.StatusOK,
Message: userconst.UpdateUserSuccessMessage,
Data: user,
})
return
}
5 changes: 5 additions & 0 deletions src/constant/user/user.constant.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package user

const FindOneUserSuccessMessage = "find one user success"
const UpdateUserSuccessMessage = "update user success"
const DeleteUserSuccessMessage = "delete user success"

0 comments on commit d2d291c

Please sign in to comment.