diff --git a/internal/handler/endpoint/endpoint.go b/internal/handler/endpoint/endpoint.go index dd45add..c6bda68 100644 --- a/internal/handler/endpoint/endpoint.go +++ b/internal/handler/endpoint/endpoint.go @@ -12,6 +12,7 @@ const GetScheduledMessageEventEndpoint = "/api/v1/schedule/message/event" const DeleteScheduledMessageEventEndpoint = "/api/v1/schedule/message/event/{id}" const UpdateScheduledMessageStatusEndpoint = "/api/v1/schedule/message/status/update" const FetchNextScheduledMessageEndpoint = "/api/v1/schedule/message/fetch" +// TODO: Tweak endpoint verbage for MessageEventResponse endpoint // TODO: Make RecordEventResponse more consistent with MessageEventResponse const RecordEventResponse = "/api/v1/schedule/message/event/response/record" const FetchMessageEventResponse = "/api/v1/schedule/message/event/response" diff --git a/internal/handler/message_event_response.go b/internal/handler/message_event_response.go index 40768d0..f90a8bf 100644 --- a/internal/handler/message_event_response.go +++ b/internal/handler/message_event_response.go @@ -93,8 +93,43 @@ type GetMessageEventResponseFetchedResponse struct { } func (e *EventResponseHandler) Fetch(w http.ResponseWriter, r *http.Request) { + queryParams := r.URL.Query() + var userId uuid.UUID + + if _, exists := queryParams["user_id"]; !exists { + http.Error(w, "Query params", http.StatusBadRequest) + return + } else { + var err error + userId, err = uuid.Parse(queryParams.Get("user_id")) + if err != nil { + http.Error(w, "Query params", http.StatusBadRequest) + return + } + } + var statusCode int var resp GetMessageEventResponseFetchedResponse + if userId == uuid.Nil { + statusCode = http.StatusBadRequest + resp.Message = "User Id is nil" + } else { + ctx := r.Context() + if sentMessages, err := e.MessageEventResponseStore.GetWithUserId(ctx, userId); err != nil { + statusCode = http.StatusInternalServerError + resp.Message = err.Error() + } else { + if len(sentMessages) == 0 { + statusCode = http.StatusNotFound + resp.Message = "Not MessageEventResponses found" + } else { + statusCode = http.StatusOK + resp.Message = "Successful" + resp.Data = sentMessages + } + } + } + RespondWithJSON(w, statusCode, &resp) }