EpisodeResponseDto.java

package cl.prgm.portaltrip.infrastructure.web.dto;

import java.util.List;

import cl.prgm.portaltrip.domain.model.Episode;
import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Schema;

@Schema(description = "Rick and Morty episode returned by catalog endpoints")
public record EpisodeResponseDto(
		@Schema(description = "Episode ID", example = "1")
		Integer id,
		@Schema(description = "Episode title", example = "Pilot")
		String name,
		@Schema(description = "Original air date", example = "December 2, 2013")
		String airDate,
		@Schema(description = "Season and episode code", example = "S01E01")
		String code,
		@ArraySchema(
				arraySchema = @Schema(description = "Character IDs appearing in the episode", example = "[1, 2]"),
				schema = @Schema(implementation = Integer.class))
		List<Integer> characterIds) {

	public static EpisodeResponseDto from(Episode episode) {
		return new EpisodeResponseDto(
				episode.id(),
				episode.name(),
				episode.airDate(),
				episode.code(),
				episode.characterIds());
	}

}