From 58043d1507be4a9d2b868c4be8ccf85fa7b624d8 Mon Sep 17 00:00:00 2001 From: nitrix Date: Thu, 12 Mar 2026 18:07:44 +0100 Subject: [PATCH] Rename path parameter {token} to {eventToken} in OpenAPI spec Aligns the path parameter naming with the value object convention used throughout the codebase (eventToken, rsvpToken, organizerToken). Co-Authored-By: Claude Opus 4.6 --- .../fete/adapter/in/web/EventController.java | 26 +++++++++---------- .../de/fete/adapter/in/web/SpaController.java | 6 ++--- backend/src/main/resources/openapi/api.yaml | 16 ++++++------ frontend/src/components/EventList.vue | 4 +-- frontend/src/views/EventDetailView.vue | 16 ++++++------ .../views/__tests__/EventDetailView.spec.ts | 4 +-- 6 files changed, 36 insertions(+), 36 deletions(-) diff --git a/backend/src/main/java/de/fete/adapter/in/web/EventController.java b/backend/src/main/java/de/fete/adapter/in/web/EventController.java index 84a3496..307e47c 100644 --- a/backend/src/main/java/de/fete/adapter/in/web/EventController.java +++ b/backend/src/main/java/de/fete/adapter/in/web/EventController.java @@ -83,10 +83,10 @@ public class EventController implements EventsApi { } @Override - public ResponseEntity getEvent(UUID token) { - var eventToken = new de.fete.domain.model.EventToken(token); - Event event = getEventUseCase.getByEventToken(eventToken) - .orElseThrow(() -> new EventNotFoundException(token)); + public ResponseEntity getEvent(UUID eventToken) { + var evtToken = new EventToken(eventToken); + Event event = getEventUseCase.getByEventToken(evtToken) + .orElseThrow(() -> new EventNotFoundException(eventToken)); var response = new GetEventResponse(); response.setEventToken(event.getEventToken().value()); @@ -96,19 +96,19 @@ public class EventController implements EventsApi { response.setTimezone(event.getTimezone().getId()); response.setLocation(event.getLocation()); response.setAttendeeCount( - (int) countAttendeesByEventUseCase.countByEvent(eventToken)); + (int) countAttendeesByEventUseCase.countByEvent(evtToken)); return ResponseEntity.ok(response); } @Override public ResponseEntity getAttendees( - UUID token, UUID organizerToken) { - var eventToken = new EventToken(token); + UUID eventToken, UUID organizerToken) { + var evtToken = new EventToken(eventToken); var orgToken = new OrganizerToken(organizerToken); List names = getAttendeesUseCase - .getAttendeeNames(eventToken, orgToken); + .getAttendeeNames(evtToken, orgToken); var attendees = names.stream() .map(name -> new Attendee().name(name)) @@ -122,9 +122,9 @@ public class EventController implements EventsApi { @Override public ResponseEntity createRsvp( - UUID token, CreateRsvpRequest createRsvpRequest) { - var eventToken = new EventToken(token); - Rsvp rsvp = createRsvpUseCase.createRsvp(eventToken, createRsvpRequest.getName()); + UUID eventToken, CreateRsvpRequest createRsvpRequest) { + var evtToken = new EventToken(eventToken); + Rsvp rsvp = createRsvpUseCase.createRsvp(evtToken, createRsvpRequest.getName()); var response = new CreateRsvpResponse(); response.setRsvpToken(rsvp.getRsvpToken().value()); @@ -134,8 +134,8 @@ public class EventController implements EventsApi { } @Override - public ResponseEntity cancelRsvp(UUID token, UUID rsvpToken) { - cancelRsvpUseCase.cancelRsvp(new EventToken(token), new RsvpToken(rsvpToken)); + public ResponseEntity cancelRsvp(UUID eventToken, UUID rsvpToken) { + cancelRsvpUseCase.cancelRsvp(new EventToken(eventToken), new RsvpToken(rsvpToken)); return ResponseEntity.noContent().build(); } diff --git a/backend/src/main/java/de/fete/adapter/in/web/SpaController.java b/backend/src/main/java/de/fete/adapter/in/web/SpaController.java index f6159af..e57e7f2 100644 --- a/backend/src/main/java/de/fete/adapter/in/web/SpaController.java +++ b/backend/src/main/java/de/fete/adapter/in/web/SpaController.java @@ -68,17 +68,17 @@ public class SpaController { /** Serves SPA HTML with event-specific meta-tags. */ @GetMapping( - value = "/events/{token}", + value = "/events/{eventToken}", produces = MediaType.TEXT_HTML_VALUE ) @ResponseBody - public String serveEventPage(@PathVariable String token, + public String serveEventPage(@PathVariable String eventToken, HttpServletRequest request) { if (htmlTemplate == null) { return ""; } String baseUrl = getBaseUrl(request); - Map meta = resolveEventMeta(token, baseUrl); + Map meta = resolveEventMeta(eventToken, baseUrl); return htmlTemplate.replace(PLACEHOLDER, renderTags(meta)); } diff --git a/backend/src/main/resources/openapi/api.yaml b/backend/src/main/resources/openapi/api.yaml index 94b808f..190df2e 100644 --- a/backend/src/main/resources/openapi/api.yaml +++ b/backend/src/main/resources/openapi/api.yaml @@ -37,7 +37,7 @@ paths: schema: $ref: "#/components/schemas/ValidationProblemDetail" - /events/{token}/rsvps/{rsvpToken}: + /events/{eventToken}/rsvps/{rsvpToken}: delete: operationId: cancelRsvp summary: Cancel RSVP @@ -47,7 +47,7 @@ paths: tags: - events parameters: - - name: token + - name: eventToken in: path required: true schema: @@ -69,14 +69,14 @@ paths: "500": description: Internal server error - /events/{token}/rsvps: + /events/{eventToken}/rsvps: post: operationId: createRsvp summary: Submit an RSVP for an event tags: - events parameters: - - name: token + - name: eventToken in: path required: true schema: @@ -115,14 +115,14 @@ paths: schema: $ref: "#/components/schemas/ProblemDetail" - /events/{token}/attendees: + /events/{eventToken}/attendees: get: operationId: getAttendees summary: Get attendee list for an event (organizer only) tags: - events parameters: - - name: token + - name: eventToken in: path required: true schema: @@ -156,14 +156,14 @@ paths: schema: $ref: "#/components/schemas/ProblemDetail" - /events/{token}: + /events/{eventToken}: get: operationId: getEvent summary: Get public event details by token tags: - events parameters: - - name: token + - name: eventToken in: path required: true schema: diff --git a/frontend/src/components/EventList.vue b/frontend/src/components/EventList.vue index 02e385e..3386c0c 100644 --- a/frontend/src/components/EventList.vue +++ b/frontend/src/components/EventList.vue @@ -76,10 +76,10 @@ async function confirmDelete() { if (rsvp) { try { - const { response } = await api.DELETE('/events/{token}/rsvps/{rsvpToken}', { + const { response } = await api.DELETE('/events/{eventToken}/rsvps/{rsvpToken}', { params: { path: { - token: eventToken, + eventToken: eventToken, rsvpToken: rsvp.rsvpToken, }, }, diff --git a/frontend/src/views/EventDetailView.vue b/frontend/src/views/EventDetailView.vue index 1a63405..4f0a0ee 100644 --- a/frontend/src/views/EventDetailView.vue +++ b/frontend/src/views/EventDetailView.vue @@ -169,8 +169,8 @@ async function fetchEvent() { event.value = null try { - const { data, error, response } = await api.GET('/events/{token}', { - params: { path: { token: route.params.eventToken as string } }, + const { data, error, response } = await api.GET('/events/{eventToken}', { + params: { path: { eventToken: route.params.eventToken as string } }, }) if (error) { @@ -217,8 +217,8 @@ async function submitRsvp() { submitting.value = true try { - const { data, error } = await api.POST('/events/{token}/rsvps', { - params: { path: { token: route.params.eventToken as string } }, + const { data, error } = await api.POST('/events/{eventToken}/rsvps', { + params: { path: { eventToken: route.params.eventToken as string } }, body: { name: nameInput.value }, }) @@ -256,10 +256,10 @@ async function handleCancelRsvp() { if (!stored) return try { - const { response } = await api.DELETE('/events/{token}/rsvps/{rsvpToken}', { + const { response } = await api.DELETE('/events/{eventToken}/rsvps/{rsvpToken}', { params: { path: { - token: route.params.eventToken as string, + eventToken: route.params.eventToken as string, rsvpToken: stored.rsvpToken, }, }, @@ -281,9 +281,9 @@ async function handleCancelRsvp() { async function fetchAttendees(eventToken: string, organizerToken: string) { try { - const { data, error } = await api.GET('/events/{token}/attendees', { + const { data, error } = await api.GET('/events/{eventToken}/attendees', { params: { - path: { token: eventToken }, + path: { eventToken: eventToken }, query: { organizerToken }, }, }) diff --git a/frontend/src/views/__tests__/EventDetailView.spec.ts b/frontend/src/views/__tests__/EventDetailView.spec.ts index 9288cc2..b568fa4 100644 --- a/frontend/src/views/__tests__/EventDetailView.spec.ts +++ b/frontend/src/views/__tests__/EventDetailView.spec.ts @@ -280,8 +280,8 @@ describe('EventDetailView', () => { await flushPromises() // Verify API call - expect(vi.mocked(api.POST)).toHaveBeenCalledWith('/events/{token}/rsvps', { - params: { path: { token: 'test-token' } }, + expect(vi.mocked(api.POST)).toHaveBeenCalledWith('/events/{eventToken}/rsvps', { + params: { path: { eventToken: 'test-token' } }, body: { name: 'Max' }, })