update methods
This commit is contained in:
parent
6d12c55785
commit
71d13bb217
5 changed files with 277 additions and 59 deletions
|
|
@ -1,6 +1,7 @@
|
|||
package merch
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
"merch-api/pkg/responses"
|
||||
|
|
@ -26,7 +27,8 @@ func (h *Handler) RegisterRoutes(r *gin.RouterGroup) {
|
|||
merchGroup.POST("/create", h.controller.create)
|
||||
merchGroup.GET("/:id", h.controller.getOne)
|
||||
merchGroup.GET("/list", h.controller.getMany)
|
||||
merchGroup.PUT("/update", h.controller.update)
|
||||
merchGroup.PUT("/:id", h.controller.updateMerch)
|
||||
merchGroup.PUT("/extra/:id", h.controller.updateExtraData)
|
||||
merchGroup.DELETE("/:id", h.controller.deleteMerch)
|
||||
|
||||
originsGroup := merchGroup.Group("/origins")
|
||||
|
|
@ -49,21 +51,14 @@ func (h *Handler) RegisterRoutes(r *gin.RouterGroup) {
|
|||
// @Failure 500 {object} responses.InternalServerError
|
||||
// @Router /merch/create [POST]
|
||||
func (co *controller) create(c *gin.Context) {
|
||||
userUuid, err := co.utils.GetUserUuidFromContext(c)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusUnauthorized, responses.Unauthorized{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
}
|
||||
|
||||
var newMerch newMerchDTO
|
||||
if err = c.ShouldBindJSON(&newMerch); err != nil {
|
||||
if err := c.ShouldBindJSON(&newMerch); err != nil {
|
||||
c.JSON(http.StatusBadRequest, responses.BadRequest{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
}
|
||||
|
||||
if err = co.service.createMerch(c, userUuid, &newMerch); err != nil {
|
||||
if err := co.service.createMerch(c, getUserId(c), &newMerch); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, responses.InternalServerError{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
|
|
@ -87,14 +82,7 @@ func (co *controller) getOne(c *gin.Context) {}
|
|||
// @Failure 500 {object} responses.InternalServerError
|
||||
// @Router /merch/list [GET]
|
||||
func (co *controller) getMany(c *gin.Context) {
|
||||
userUuid, err := co.utils.GetUserUuidFromContext(c)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusUnauthorized, responses.Unauthorized{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
}
|
||||
|
||||
response, err := co.service.getMany(c, userUuid)
|
||||
response, err := co.service.getMany(c, getUserId(c))
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, responses.InternalServerError{Error: err.Error()})
|
||||
logErrController(err)
|
||||
|
|
@ -109,7 +97,95 @@ func (co *controller) getMany(c *gin.Context) {
|
|||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
|
||||
func (co *controller) update(c *gin.Context) {}
|
||||
// updateMerch godoc
|
||||
//
|
||||
// @Summary Update merch
|
||||
// @Description Update merch general info (except extra data)
|
||||
// @Tags Merch
|
||||
// @Accept json
|
||||
// @Param uuid path string true "merch uuid"
|
||||
// @Param payload body updateMerchDTO true "payload"
|
||||
// @Produce json
|
||||
// @Success 200 {object} merchDTO
|
||||
// @Failure 400 {object} responses.BadRequest
|
||||
// @Failure 401 {object} responses.Unauthorized
|
||||
// @Failure 500 {object} responses.InternalServerError
|
||||
// @Router /merch/{uuid} [PUT]
|
||||
func (co *controller) updateMerch(c *gin.Context) {
|
||||
merchUuid := c.Param("id")
|
||||
if err := uuid.Validate(merchUuid); err != nil {
|
||||
c.JSON(http.StatusBadRequest, responses.BadRequest{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
}
|
||||
|
||||
var payload updateMerchDTO
|
||||
if err := c.ShouldBindJSON(&payload); err != nil {
|
||||
c.JSON(http.StatusBadRequest, responses.BadRequest{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
}
|
||||
|
||||
if merchUuid != payload.MerchUuid {
|
||||
c.JSON(http.StatusBadRequest, responses.BadRequest{Error: "MerchUuid does not match"})
|
||||
logErrController(errors.New("MerchUuid does not match"))
|
||||
return
|
||||
}
|
||||
|
||||
response, err := co.service.updateMerch(c, getUserId(c), &payload)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, responses.InternalServerError{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
|
||||
// updateMerch godoc
|
||||
//
|
||||
// @Summary Update merch extra data
|
||||
// @Description Update ONLY merch extra data
|
||||
// @Tags Merch
|
||||
// @Accept json
|
||||
// @Param uuid path string true "merch uuid"
|
||||
// @Param payload body extraDataDTO true "payload"
|
||||
// @Produce json
|
||||
// @Success 200 {object} extraDataDTO
|
||||
// @Failure 400 {object} responses.BadRequest
|
||||
// @Failure 401 {object} responses.Unauthorized
|
||||
// @Failure 500 {object} responses.InternalServerError
|
||||
// @Router /merch/extra/{uuid} [PUT]
|
||||
func (co *controller) updateExtraData(c *gin.Context) {
|
||||
merchUuid := c.Param("id")
|
||||
if err := uuid.Validate(merchUuid); err != nil {
|
||||
c.JSON(http.StatusBadRequest, responses.BadRequest{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
}
|
||||
|
||||
var payload extraDataDTO
|
||||
if err := c.ShouldBindJSON(&payload); err != nil {
|
||||
c.JSON(http.StatusBadRequest, responses.BadRequest{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
}
|
||||
|
||||
if merchUuid != payload.MerchUuid {
|
||||
c.JSON(http.StatusBadRequest, responses.BadRequest{Error: "MerchUuid does not match"})
|
||||
logErrController(errors.New("MerchUuid does not match"))
|
||||
return
|
||||
}
|
||||
|
||||
response, err := co.service.updateExtraData(c, getUserId(c), &payload)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, responses.InternalServerError{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, response)
|
||||
}
|
||||
|
||||
// deleteMerch godoc
|
||||
//
|
||||
|
|
@ -124,21 +200,14 @@ func (co *controller) update(c *gin.Context) {}
|
|||
// @Failure 500 {object} responses.InternalServerError
|
||||
// @Router /merch/{uuid} [DELETE]
|
||||
func (co *controller) deleteMerch(c *gin.Context) {
|
||||
userUuid, err := co.utils.GetUserUuidFromContext(c)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusUnauthorized, responses.Unauthorized{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
}
|
||||
|
||||
merchUuid := c.Param("id")
|
||||
if err = uuid.Validate(merchUuid); err != nil {
|
||||
if err := uuid.Validate(merchUuid); err != nil {
|
||||
c.JSON(http.StatusBadRequest, responses.BadRequest{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
}
|
||||
|
||||
if err = co.service.deleteOneMerchRecord(c, userUuid, merchUuid); err != nil {
|
||||
if err := co.service.deleteOneMerchRecord(c, getUserId(c), merchUuid); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, responses.InternalServerError{Error: err.Error()})
|
||||
logErrController(err)
|
||||
return
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue