@@ -21,21 +21,30 @@ type SendScheduleHandler struct {
2121 service * services.SendScheduleService
2222}
2323
24- func NewSendScheduleHandler (logger telemetry.Logger , tracer telemetry.Tracer , validator * validators.SendScheduleHandlerValidator , service * services.SendScheduleService ) * SendScheduleHandler {
25- return & SendScheduleHandler {logger : logger .WithService (fmt .Sprintf ("%T" , & SendScheduleHandler {})), tracer : tracer , validator : validator , service : service }
24+ func NewSendScheduleHandler (
25+ logger telemetry.Logger ,
26+ tracer telemetry.Tracer ,
27+ validator * validators.SendScheduleHandlerValidator ,
28+ service * services.SendScheduleService ,
29+ ) * SendScheduleHandler {
30+ return & SendScheduleHandler {
31+ logger : logger .WithService (fmt .Sprintf ("%T" , & SendScheduleHandler {})),
32+ tracer : tracer ,
33+ validator : validator ,
34+ service : service ,
35+ }
2636}
2737
2838func (h * SendScheduleHandler ) RegisterRoutes (router fiber.Router , middlewares ... fiber.Handler ) {
2939 router .Get ("/v1/send-schedules" , h .computeRoute (middlewares , h .Index )... )
3040 router .Post ("/v1/send-schedules" , h .computeRoute (middlewares , h .Store )... )
31- router .Get ("/v1/send-schedules/:scheduleID" , h .computeRoute (middlewares , h .Show )... )
3241 router .Put ("/v1/send-schedules/:scheduleID" , h .computeRoute (middlewares , h .Update )... )
3342 router .Delete ("/v1/send-schedules/:scheduleID" , h .computeRoute (middlewares , h .Delete )... )
3443}
3544
3645// Index godoc
3746// @Summary List send schedules
38- // @Description Lists the send schedules owned by the authenticated user.
47+ // @Description List all send schedules owned by the authenticated user.
3948// @Security ApiKeyAuth
4049// @Tags Send Schedules
4150// @Produce json
@@ -46,47 +55,19 @@ func (h *SendScheduleHandler) RegisterRoutes(router fiber.Router, middlewares ..
4655func (h * SendScheduleHandler ) Index (c * fiber.Ctx ) error {
4756 ctx , span , ctxLogger := h .tracer .StartFromFiberCtxWithLogger (c , h .logger )
4857 defer span .End ()
58+
4959 schedules , err := h .service .Index (ctx , h .userIDFomContext (c ))
5060 if err != nil {
5161 ctxLogger .Error (stacktrace .Propagate (err , "cannot list send schedules" ))
5262 return h .responseInternalServerError (c )
5363 }
54- return h .responseOK (c , "send schedules fetched successfully" , schedules )
55- }
5664
57- // Show godoc
58- // @Summary Show send schedule
59- // @Description Loads a single send schedule owned by the authenticated user.
60- // @Security ApiKeyAuth
61- // @Tags Send Schedules
62- // @Produce json
63- // @Param scheduleID path string true "Schedule ID"
64- // @Success 200 {object} responses.SendScheduleResponse
65- // @Failure 401 {object} responses.Unauthorized
66- // @Failure 404 {object} responses.NotFound
67- // @Failure 500 {object} responses.InternalServerError
68- // @Router /send-schedules/{scheduleID} [get]
69- func (h * SendScheduleHandler ) Show (c * fiber.Ctx ) error {
70- ctx , span , ctxLogger := h .tracer .StartFromFiberCtxWithLogger (c , h .logger )
71- defer span .End ()
72- scheduleID , err := uuid .Parse (c .Params ("scheduleID" ))
73- if err != nil {
74- return h .responseBadRequest (c , err )
75- }
76- schedule , err := h .service .Load (ctx , h .userIDFomContext (c ), scheduleID )
77- if err != nil {
78- ctxLogger .Error (stacktrace .Propagate (err , "cannot load send schedule" ))
79- if stacktrace .GetCode (err ) == 404 {
80- return h .responseNotFound (c , err .Error ())
81- }
82- return h .responseInternalServerError (c )
83- }
84- return h .responseOK (c , "send schedule fetched successfully" , schedule )
65+ return h .responseOK (c , "send schedules fetched successfully" , schedules )
8566}
8667
8768// Store godoc
8869// @Summary Create send schedule
89- // @Description Creates a send schedule for the authenticated user.
70+ // @Description Create a new send schedule for the authenticated user.
9071// @Security ApiKeyAuth
9172// @Tags Send Schedules
9273// @Accept json
@@ -101,26 +82,34 @@ func (h *SendScheduleHandler) Show(c *fiber.Ctx) error {
10182func (h * SendScheduleHandler ) Store (c * fiber.Ctx ) error {
10283 ctx , span , ctxLogger := h .tracer .StartFromFiberCtxWithLogger (c , h .logger )
10384 defer span .End ()
85+
10486 var request requests.SendScheduleStore
10587 if err := c .BodyParser (& request ); err != nil {
10688 return h .responseBadRequest (c , err )
10789 }
90+
10891 request = request .Sanitize ()
10992 if errors := h .validator .ValidateStore (ctx , request ); len (errors ) != 0 {
110- ctxLogger .Warn (stacktrace .NewError (fmt .Sprintf ("validation errors [%s], while storing send schedule [%+#v]" , spew .Sdump (errors ), request )))
93+ ctxLogger .Warn (stacktrace .NewError (fmt .Sprintf (
94+ "validation errors [%s], while storing send schedule [%+#v]" ,
95+ spew .Sdump (errors ),
96+ request ,
97+ )))
11198 return h .responseUnprocessableEntity (c , errors , "validation errors while saving send schedule" )
11299 }
100+
113101 schedule , err := h .service .Store (ctx , request .ToParams (h .userFromContext (c )))
114102 if err != nil {
115103 ctxLogger .Error (stacktrace .Propagate (err , "cannot create send schedule" ))
116104 return h .responseInternalServerError (c )
117105 }
106+
118107 return h .responseCreated (c , "send schedule created successfully" , schedule )
119108}
120109
121110// Update godoc
122111// @Summary Update send schedule
123- // @Description Updates a send schedule owned by the authenticated user.
112+ // @Description Update a send schedule owned by the authenticated user.
124113// @Security ApiKeyAuth
125114// @Tags Send Schedules
126115// @Accept json
@@ -137,51 +126,68 @@ func (h *SendScheduleHandler) Store(c *fiber.Ctx) error {
137126func (h * SendScheduleHandler ) Update (c * fiber.Ctx ) error {
138127 ctx , span , ctxLogger := h .tracer .StartFromFiberCtxWithLogger (c , h .logger )
139128 defer span .End ()
129+
140130 scheduleID , err := uuid .Parse (c .Params ("scheduleID" ))
141131 if err != nil {
142132 return h .responseBadRequest (c , err )
143133 }
134+
144135 var request requests.SendScheduleStore
145136 if err = c .BodyParser (& request ); err != nil {
146137 return h .responseBadRequest (c , err )
147138 }
139+
148140 request = request .Sanitize ()
149141 if errors := h .validator .ValidateStore (ctx , request ); len (errors ) != 0 {
150142 return h .responseUnprocessableEntity (c , errors , "validation errors while updating send schedule" )
151143 }
152- schedule , err := h .service .Update (ctx , h .userIDFomContext (c ), scheduleID , request .ToParams (h .userFromContext (c )))
144+
145+ schedule , err := h .service .Update (
146+ ctx ,
147+ h .userIDFomContext (c ),
148+ scheduleID ,
149+ request .ToParams (h .userFromContext (c )),
150+ )
153151 if err != nil {
154152 ctxLogger .Error (stacktrace .Propagate (err , "cannot update send schedule" ))
155153 if stacktrace .GetCode (err ) == 404 {
156154 return h .responseNotFound (c , err .Error ())
157155 }
158156 return h .responseInternalServerError (c )
159157 }
158+
160159 return h .responseOK (c , "send schedule updated successfully" , schedule )
161160}
162161
163162// Delete godoc
164163// @Summary Delete send schedule
165- // @Description Deletes a send schedule owned by the authenticated user.
164+ // @Description Delete a send schedule owned by the authenticated user.
166165// @Security ApiKeyAuth
167166// @Tags Send Schedules
168167// @Produce json
169168// @Param scheduleID path string true "Schedule ID"
170169// @Success 204 {object} responses.NoContent
171170// @Failure 400 {object} responses.BadRequest
172171// @Failure 401 {object} responses.Unauthorized
172+ // @Failure 404 {object} responses.NotFound
173173// @Failure 500 {object} responses.InternalServerError
174174// @Router /send-schedules/{scheduleID} [delete]
175175func (h * SendScheduleHandler ) Delete (c * fiber.Ctx ) error {
176176 ctx , span , ctxLogger := h .tracer .StartFromFiberCtxWithLogger (c , h .logger )
177177 defer span .End ()
178+
178179 scheduleID , err := uuid .Parse (c .Params ("scheduleID" ))
179180 if err != nil {
180181 return h .responseBadRequest (c , err )
181182 }
183+
182184 if err = h .service .Delete (ctx , h .userIDFomContext (c ), scheduleID ); err != nil {
183185 ctxLogger .Error (stacktrace .Propagate (err , "cannot delete send schedule" ))
186+ if stacktrace .GetCode (err ) == 404 {
187+ return h .responseNotFound (c , err .Error ())
188+ }
184189 return h .responseInternalServerError (c )
185190 }
191+
186192 return h .responseNoContent (c , "send schedule deleted successfully" )
187193}
0 commit comments