@@ -3,6 +3,9 @@ package handlers
33import (
44 "fmt"
55
6+ "github.com/NdoleStudio/http-sms-manager/pkg/repositories"
7+ "github.com/google/uuid"
8+
69 "github.com/NdoleStudio/http-sms-manager/pkg/requests"
710 "github.com/NdoleStudio/http-sms-manager/pkg/services"
811 "github.com/NdoleStudio/http-sms-manager/pkg/telemetry"
@@ -52,9 +55,9 @@ func (h *MessageHandler) RegisterRoutes(router fiber.Router) {
5255// @Produce json
5356// @Param payload body requests.MessageSend true "PostSend message request payload"
5457// @Success 200 {object} responses.MessageResponse
55- // @Success 400 {object} responses.BadRequest
56- // @Success 422 {object} responses.UnprocessableEntity
57- // @Success 500 {object} responses.InternalServerError
58+ // @Failure 400 {object} responses.BadRequest
59+ // @Failure 422 {object} responses.UnprocessableEntity
60+ // @Failure 500 {object} responses.InternalServerError
5861// @Router /messages/send [post]
5962func (h * MessageHandler ) PostSend (c * fiber.Ctx ) error {
6063 ctx , span := h .tracer .StartFromFiberCtx (c )
@@ -93,9 +96,9 @@ func (h *MessageHandler) PostSend(c *fiber.Ctx) error {
9396// @Produce json
9497// @Param limit query int false "Number of outstanding messages to return" minimum(1) maximum(10)
9598// @Success 200 {object} responses.MessagesResponse
96- // @Success 400 {object} responses.BadRequest
97- // @Success 422 {object} responses.UnprocessableEntity
98- // @Success 500 {object} responses.InternalServerError
99+ // @Failure 400 {object} responses.BadRequest
100+ // @Failure 422 {object} responses.UnprocessableEntity
101+ // @Failure 500 {object} responses.InternalServerError
99102// @Router /messages/outstanding [get]
100103func (h * MessageHandler ) GetOutstanding (c * fiber.Ctx ) error {
101104 ctx , span := h .tracer .StartFromFiberCtx (c )
@@ -138,9 +141,9 @@ func (h *MessageHandler) GetOutstanding(c *fiber.Ctx) error {
138141// @Param query query string false "filter messages containing query"
139142// @Param limit query int false "number of messages to return" minimum(1) maximum(20)
140143// @Success 200 {object} responses.MessagesResponse
141- // @Success 400 {object} responses.BadRequest
142- // @Success 422 {object} responses.UnprocessableEntity
143- // @Success 500 {object} responses.InternalServerError
144+ // @Failure 400 {object} responses.BadRequest
145+ // @Failure 422 {object} responses.UnprocessableEntity
146+ // @Failure 500 {object} responses.InternalServerError
144147// @Router /messages [get]
145148func (h * MessageHandler ) Index (c * fiber.Ctx ) error {
146149 ctx , span := h .tracer .StartFromFiberCtx (c )
@@ -180,9 +183,10 @@ func (h *MessageHandler) Index(c *fiber.Ctx) error {
180183// @Param messageID path string true "ID of the message" default(32343a19-da5e-4b1b-a767-3298a73703ca)
181184// @Param payload body requests.MessageEvent true "Payload of the event emitted."
182185// @Success 200 {object} responses.MessageResponse
183- // @Success 400 {object} responses.BadRequest
184- // @Success 422 {object} responses.UnprocessableEntity
185- // @Success 500 {object} responses.InternalServerError
186+ // @Failure 400 {object} responses.BadRequest
187+ // @Failure 404 {object} responses.NotFound
188+ // @Failure 422 {object} responses.UnprocessableEntity
189+ // @Failure 500 {object} responses.InternalServerError
186190// @Router /messages/{messageID}/events [post]
187191func (h * MessageHandler ) PostEvent (c * fiber.Ctx ) error {
188192 ctx , span := h .tracer .StartFromFiberCtx (c )
@@ -205,7 +209,12 @@ func (h *MessageHandler) PostEvent(c *fiber.Ctx) error {
205209 return h .responseUnprocessableEntity (c , errors , "validation errors while storing event" )
206210 }
207211
208- message , err := h .service .StoreEvent (ctx , request .ToMessageStoreEventParams (c .OriginalURL ()))
212+ message , err := h .service .GetMessage (ctx , uuid .MustParse (request .MessageID ))
213+ if err != nil && stacktrace .GetCode (err ) == repositories .ErrCodeNotFound {
214+ return h .responseNotFound (c , fmt .Sprintf ("cannot find message with ID [%s]" , request .MessageID ))
215+ }
216+
217+ message , err = h .service .StoreEvent (ctx , message , request .ToMessageStoreEventParams (c .OriginalURL ()))
209218 if err != nil {
210219 msg := fmt .Sprintf ("cannot store event for message [%s] with paylod [%s]" , request .MessageID , c .Body ())
211220 ctxLogger .Error (stacktrace .Propagate (err , msg ))
0 commit comments