import { RecipeDto } from "../dtos/RecipeDto.js"; import { RecipeEntity } from "../entities/RecipeEntity.js"; import { AbstractDtoEntityMapper } from "./AbstractDtoEntityMapper.js"; import { RecipeIngredientGroupDtoEntityMapper } from "./RecipeIngredientGroupDtoEntityMapper.js"; import { RecipeInstructionStepDtoEntityMapper } from "./RecipeInstructionStepDtoEntityMapper.js"; export class RecipeDtoEntityMapper extends AbstractDtoEntityMapper{ constructor( private instructionStepMapper : RecipeInstructionStepDtoEntityMapper, private ingredientGroupMapper : RecipeIngredientGroupDtoEntityMapper ){ super(); } toDto(entity: RecipeEntity): RecipeDto { const dto = new RecipeDto(); this.mapBaseEntityToDto(entity, dto); dto.title = entity.title; dto.amount = entity.amount dto.amountDescription = entity.amountDescription; // map instructions const instructionStepEntities = entity.instructionSteps; const instructionStepDtos = instructionStepEntities.map((stepEntity) => this.instructionStepMapper.toDto(stepEntity)); dto.instructions = instructionStepDtos; // map ingredient groups const ingredientGroupEntities = entity.ingredientGroups; const ingredientGroupDtos = ingredientGroupEntities.map((groupEntity) => this.ingredientGroupMapper.toDto(groupEntity)); dto.ingredientGroups = ingredientGroupDtos; return dto; } toEntity(dto: RecipeDto): RecipeEntity { const entity = new RecipeEntity(); this.mapBaseDtoToEntity(dto, entity); entity.title = dto.title; entity.amount = dto.amount entity.amountDescription = dto.amountDescription; // map instructions const instructionStepDtos = dto.instructions; const instructionStepEntities = instructionStepDtos.map((stepDto) => this.instructionStepMapper.toEntity(stepDto)); entity.instructionSteps = instructionStepEntities; // map ingredient groups const ingredientGroupDtos = dto.ingredientGroups; const ingredientGroupEntities = ingredientGroupDtos.map((ingredientGroupDto) => this.ingredientGroupMapper.toEntity(ingredientGroupDto)); entity.ingredientGroups = ingredientGroupEntities; return entity; } }