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
EventMapperto handle the new event update classes