tsk-33: Tweak get schedule message event endpoint (#37)

Closes #33

Reviewed-on: phoenix/textsender-api#37
Co-authored-by: phoenix <kundeng00@pm.me>
Co-committed-by: phoenix <kundeng00@pm.me>
This commit is contained in:
phoenix
2025-11-13 00:48:04 +00:00
committed by phoenix
parent 7f588cc80c
commit 3218c69f1e
3 changed files with 27 additions and 17 deletions
+1 -1
View File
@@ -8,6 +8,6 @@ const ADD_CONTACT_ENDPOINT = "/api/v1/contact/new"
const ScheduleMessageEndpoint = "/api/v1/schedule/message" const ScheduleMessageEndpoint = "/api/v1/schedule/message"
const GetScheduledMessageEndpoint = "/api/v1/schedule/message" const GetScheduledMessageEndpoint = "/api/v1/schedule/message"
const AddEventToScheduledMessageEndpoint = "/api/v1/schedule/message/event" const AddEventToScheduledMessageEndpoint = "/api/v1/schedule/message/event"
const GetScheduledMessageEventEndpoint = "/api/v1/schedule/message/event/{id}" const GetScheduledMessageEventEndpoint = "/api/v1/schedule/message/event"
const DeleteScheduledMessageEventEndpoint = "/api/v1/schedule/message/event/{id}" const DeleteScheduledMessageEventEndpoint = "/api/v1/schedule/message/event/{id}"
const UpdateScheduledMessageStatusEndpoint = "/api/v1/schedule/message/status/update" const UpdateScheduledMessageStatusEndpoint = "/api/v1/schedule/message/status/update"
+22 -14
View File
@@ -109,26 +109,23 @@ func (s *ScheduledMessageEventHandler) GetScheduledMessageEvent(w http.ResponseW
return return
} }
id := chi.URLParam(r, "id") var id, scheduledMessageId uuid.UUID
if len(id) == 0 { if idParam, err := ParseQueryParams(r, "id"); err == nil {
pathParts := strings.Split(r.URL.Path, "/") id, err = uuid.Parse(*idParam)
if len(pathParts) < 7 { }
http.Error(w, "Id not provided", http.StatusBadRequest) if scheduledMessageIdParam, err := ParseQueryParams(r, "scheduled_message_id"); err == nil {
return scheduledMessageId, err = uuid.Parse(*scheduledMessageIdParam)
} else {
id = pathParts[6]
}
} }
var statusCode int var statusCode int
var resp GetScheduledMessageEventResponse var resp GetScheduledMessageEventResponse
ctx := r.Context()
if parsedId, err := uuid.Parse(id); err != nil { if id == uuid.Nil && scheduledMessageId == uuid.Nil {
resp.Message = err.Error()
statusCode = http.StatusBadRequest statusCode = http.StatusBadRequest
} else { resp.Message = "Query parameters missing"
ctx := r.Context() } else if id != uuid.Nil {
if event, err := s.ScheduledMessageEventStore.Get(ctx, parsedId); err != nil { if event, err := s.ScheduledMessageEventStore.Get(ctx, id); err != nil {
resp.Message = err.Error() resp.Message = err.Error()
statusCode = http.StatusInternalServerError statusCode = http.StatusInternalServerError
} else { } else {
@@ -141,6 +138,17 @@ func (s *ScheduledMessageEventHandler) GetScheduledMessageEvent(w http.ResponseW
resp.Message = "Scheduled message event not found" resp.Message = "Scheduled message event not found"
} }
} }
} else {
if events, err := s.ScheduledMessageEventStore.GetWithScheduleMessageId(ctx, scheduledMessageId); err != nil {
statusCode = http.StatusInternalServerError
resp.Message = err.Error()
} else {
statusCode = http.StatusOK
resp.Message = "Successful"
for _, event := range events {
resp.Data = append(resp.Data, *event)
}
}
} }
RespondWithJSON(w, statusCode, &resp) RespondWithJSON(w, statusCode, &resp)
@@ -2,6 +2,7 @@ package handler
import ( import (
"encoding/json" "encoding/json"
"fmt"
"net/http" "net/http"
"net/http/httptest" "net/http/httptest"
"strings" "strings"
@@ -113,8 +114,9 @@ func TestGetScheduledMessageEventWithMock(t *testing.T) {
assert.NoError(t, err, "Error creating scheduled message event: %v", err) assert.NoError(t, err, "Error creating scheduled message event: %v", err)
} }
endpointValue := strings.Replace(endpoint.GetScheduledMessageEventEndpoint, "{id}", event.Id.String(), 1) url := fmt.Sprintf("%s?id=%s", endpoint.GetScheduledMessageEventEndpoint, event.Id.String())
req, _ := http.NewRequest("GET", endpointValue, nil) fmt.Println("Url:", url)
req, _ := http.NewRequest("GET", url, nil)
rr := httptest.NewRecorder() rr := httptest.NewRecorder()
handler.GetScheduledMessageEvent(rr, req) handler.GetScheduledMessageEvent(rr, req)