Dtos Mappers

In this lesson, we'll implement the DTOs and mappers needed for updating events through our presentation layer, following the same pattern we used for creating events.

Data Transfer Objects

Let's create dedicated DTOs for updating events while maintaining separation from our create event DTOs.

First, let's create the ticket type update DTOs:

@Data @AllArgsConstructor @NoArgsConstructor public class UpdateTicketTypeRequestDto { private UUID id; @NotBlank(message = "Ticket type name is required") private String name; @NotNull(message = "Price is required") @PositiveOrZero(message = "Price must be zero or greater") private Double price; private String description; private Integer totalAvailable; }

Now for the event update DTOs:

@Data @AllArgsConstructor @NoArgsConstructor public class UpdateEventRequestDto { @NotNull(message = "Event ID must be provided") private UUID id; @NotBlank(message = "Event name is required") private String name; private LocalDateTime start; private LocalDateTime end; @NotBlank(message = "Venue information is required") private String venue; private LocalDateTime salesStart; private LocalDateTime salesEnd; @NotNull(message = "Event status must be provided") private EventStatusEnum status; @NotEmpty(message = "At least one ticket type is required") @Valid private List<UpdateTicketTypeRequestDto> ticketTypes; }

Mapper Updates

We need to extend our EventMapper interface to handle the new update DTOs:

@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface EventMapper { // Existing mappings... UpdateTicketTypeRequest fromDto(UpdateTicketTypeRequestDto dto); UpdateEventRequest fromDto(UpdateEventRequestDto dto); UpdateTicketTypeResponseDto toUpdateTicketTypeResponseDto(TicketType ticketType); UpdateEventResponseDto toUpdateEventResponseDto(Event event); }

Summary

  • Created DTOs required for event updating
  • Updated the EventMapper to handle the new event update classes
© 2026 Devtiro Ltd. All rights reserved