tsk-27: Added endpoint to delete scheduled message event (#31)
Closes #27 Reviewed-on: phoenix/textsender-api#31 Co-authored-by: phoenix <kundeng00@pm.me> Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
@@ -27,6 +27,11 @@ type GetScheduledMessageEventResponse struct {
|
||||
Data []scheduling.ScheduledMessageEvent `json:"data"`
|
||||
}
|
||||
|
||||
type DeleteScheduledMessageEventResponse struct {
|
||||
Message string `json:"message"`
|
||||
Data []scheduling.ScheduledMessageEvent `json:"data"`
|
||||
}
|
||||
|
||||
type ScheduledMessageEventHandler struct {
|
||||
ScheduledMessageEventStore store.ScheduledMessageEventStore
|
||||
ScheduledMessageStore store.ScheduledMessageStore
|
||||
@@ -127,9 +132,67 @@ func (s *ScheduledMessageEventHandler) GetScheduledMessageEvent(w http.ResponseW
|
||||
resp.Message = err.Error()
|
||||
statusCode = http.StatusInternalServerError
|
||||
} else {
|
||||
resp.Message = "Successful"
|
||||
statusCode = http.StatusOK
|
||||
resp.Data = append(resp.Data, *event)
|
||||
if event != nil {
|
||||
resp.Message = "Successful"
|
||||
statusCode = http.StatusOK
|
||||
resp.Data = append(resp.Data, *event)
|
||||
} else {
|
||||
statusCode = http.StatusNotFound
|
||||
resp.Message = "Scheduled message event not found"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RespondWithJSON(w, statusCode, &resp)
|
||||
}
|
||||
|
||||
func (s *ScheduledMessageEventHandler) DeleteScheduledMessageEvent(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != http.MethodDelete {
|
||||
http.Error(w, "Metnot allowed", http.StatusMethodNotAllowed)
|
||||
return
|
||||
}
|
||||
|
||||
id := chi.URLParam(r, "id")
|
||||
if len(id) == 0 {
|
||||
pathParts := strings.Split(r.URL.Path, "/")
|
||||
if len(pathParts) < 7 {
|
||||
http.Error(w, "Id not provided", http.StatusBadRequest)
|
||||
return
|
||||
} else {
|
||||
id = pathParts[6]
|
||||
}
|
||||
}
|
||||
|
||||
var resp DeleteScheduledMessageEventResponse
|
||||
var statusCode int
|
||||
|
||||
if parsedId, err := uuid.Parse(id); err != nil {
|
||||
resp.Message = err.Error()
|
||||
statusCode = http.StatusBadRequest
|
||||
} else {
|
||||
ctx := r.Context()
|
||||
if event, err := s.ScheduledMessageEventStore.Get(ctx, parsedId); err != nil {
|
||||
resp.Message = err.Error()
|
||||
statusCode = http.StatusInternalServerError
|
||||
} else {
|
||||
if schMsg, err := s.ScheduledMessageStore.Get(ctx, event.ScheduledMessageId); err != nil {
|
||||
resp.Message = err.Error()
|
||||
statusCode = http.StatusInternalServerError
|
||||
} else {
|
||||
if schMsg.Status == scheduling.Pending {
|
||||
if err = s.ScheduledMessageEventStore.Delete(ctx, event.Id); err != nil {
|
||||
resp.Message = err.Error()
|
||||
statusCode = http.StatusInternalServerError
|
||||
} else {
|
||||
resp.Message = "Successful"
|
||||
resp.Data = append(resp.Data, *event)
|
||||
statusCode = http.StatusOK
|
||||
}
|
||||
} else {
|
||||
statusCode = http.StatusBadRequest
|
||||
resp.Message = "Invalid status"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user