get prices methods

This commit is contained in:
nquidox 2026-03-10 23:44:24 +03:00
parent c772f0a4d2
commit 9e97f082fa
4 changed files with 324 additions and 14 deletions

View file

@ -38,6 +38,10 @@ func (h *Handler) RegisterRoutes(r *gin.RouterGroup) {
originsGroup.GET("", h.controller.getOrigins)
originsGroup.DELETE("", h.controller.deleteOrigin)
chartsGroup := r.Group("/prices")
chartsGroup.GET("", h.controller.getChartsPrices)
chartsGroup.GET("/:uuid", h.controller.getDistinctPrices)
}
// create godoc
@ -105,13 +109,13 @@ func (co *controller) getMany(c *gin.Context) {
// @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"
// @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
// @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")
@ -150,13 +154,13 @@ func (co *controller) updateMerch(c *gin.Context) {
// @Description Update ONLY merch extra data
// @Tags Merch
// @Accept json
// @Param uuid path string true "merch uuid"
// @Param payload body extraDataDTO true "payload"
// @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
// @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")
@ -303,3 +307,66 @@ func (co *controller) deleteOrigin(c *gin.Context) {
logDebug(controllerLogHeader, "delete origin success")
c.Status(http.StatusNoContent)
}
// getChartsPrices godoc
//
// @Summary Получить цены мерча за период
// @Description Получить цены мерча за период
// @Tags Merch
// @Security BearerAuth
// @Produce json
// @Param days query string false "period in days"
// @Success 200 {array} PricesResponse
// @Failure 400 {object} responses.BadRequest
// @Failure 401 {object} responses.Unauthorized
// @Failure 500 {object} responses.InternalServerError
// @Router /prices [get]
func (co *controller) getChartsPrices(c *gin.Context) {
response, err := co.service.getPrices(c, getUserId(c), getDays(c))
if err != nil {
c.JSON(http.StatusBadRequest, responses.InternalServerError{Error: err.Error()})
logErr(controllerLogHeader, err)
return
}
c.JSON(http.StatusOK, response)
}
// getDistinctPrices godoc
//
// @Summary Получить перепады цен мерча за период по его merch_uuid
// @Description Получить перепады цен мерча за период по его merch_uuid
// @Tags Merch
// @Security BearerAuth
// @Produce json
// @Param uuid path string true "merch_uuid"
// @Param days query string false "period in days"
// @Success 200 {object} PricesResponse
// @Success 204
// @Failure 400 {object} responses.BadRequest
// @Failure 401 {object} responses.Unauthorized
// @Failure 500 {object} responses.InternalServerError
// @Router /prices/{uuid} [get]
func (co *controller) getDistinctPrices(c *gin.Context) {
merchUuid := c.Param("uuid")
if merchUuid == "" {
err := errors.New("MerchUuid is empty")
c.JSON(http.StatusBadRequest, responses.BadRequest{Error: err.Error()})
logErr(controllerLogHeader, err)
return
}
response, err := co.service.getDistinctPrices(c, getUserId(c), merchUuid, getDays(c))
if err != nil {
c.JSON(http.StatusBadRequest, responses.InternalServerError{Error: err.Error()})
logErr(controllerLogHeader, err)
return
}
if response == nil {
c.Status(http.StatusNoContent)
return
}
c.JSON(http.StatusOK, response)
}