@@ -41,6 +41,7 @@ func NewPhoneHandler(
4141func (h * PhoneHandler ) RegisterRoutes (router fiber.Router ) {
4242 router .Get ("/phones" , h .Index )
4343 router .Put ("/phones" , h .Upsert )
44+ router .Delete ("/phones/:phoneID" , h .Delete )
4445}
4546
4647// Index returns the phones of a user
@@ -130,3 +131,40 @@ func (h *PhoneHandler) Upsert(c *fiber.Ctx) error {
130131
131132 return h .responseOK (c , "phone updated successfully" , phone )
132133}
134+
135+ // Delete a phone
136+ // @Summary Delete Phone
137+ // @Description Delete a phone that has been sored in the database
138+ // @Security ApiKeyAuth
139+ // @Tags Phones
140+ // @Accept json
141+ // @Produce json
142+ // @Param phoneID path string true "ID of the phone" default(32343a19-da5e-4b1b-a767-3298a73703ca)
143+ // @Success 204 {object}
144+ // @Failure 400 {object} responses.BadRequest
145+ // @Failure 401 {object} responses.Unauthorized
146+ // @Failure 422 {object} responses.UnprocessableEntity
147+ // @Failure 500 {object} responses.InternalServerError
148+ // @Router /phones/{phoneID} [delete]
149+ func (h * PhoneHandler ) Delete (c * fiber.Ctx ) error {
150+ ctx , span := h .tracer .StartFromFiberCtx (c )
151+ defer span .End ()
152+
153+ ctxLogger := h .tracer .CtxLogger (h .logger , span )
154+
155+ request := requests.PhoneDelete {PhoneID : c .Params ("phoneID" )}
156+ if errors := h .validator .ValidateDelete (ctx , request ); len (errors ) != 0 {
157+ msg := fmt .Sprintf ("validation errors [%s], while deleting phone [%+#v]" , spew .Sdump (errors ), request )
158+ ctxLogger .Warn (stacktrace .NewError (msg ))
159+ return h .responseUnprocessableEntity (c , errors , "validation errors while deleting phone" )
160+ }
161+
162+ err := h .service .Delete (ctx , h .userIDFomContext (c ), request .PhoneIDUuid ())
163+ if err != nil {
164+ msg := fmt .Sprintf ("cannot delete phones with params [%+#v]" , request )
165+ ctxLogger .Error (stacktrace .Propagate (err , msg ))
166+ return h .responseInternalServerError (c )
167+ }
168+
169+ return h .responseOK (c , "phone deleted successfully" , nil )
170+ }
0 commit comments