package com.r11.tools.mappers;

import com.r11.tools.model.MockedMessage;
import com.r11.tools.model.MockedMessageDto;
import org.mapstruct.*;

import java.util.Optional;

/**
 * Creates key value for redis entry
 * @author Rafał Źukowicz
 */
@Mapper
public interface MockedMessageMapper {
    @Mapping( target = "createdAt" , expression = "java(java.time.LocalDateTime.now())")
    MockedMessage mockedMessageDtoToMockedMessage(MockedMessageDto mockedMessageDto);
    MockedMessageDto mockedMessageToMockedMessageDto(MockedMessage mockedMessage);

    default Optional<MockedMessageDto> optionalMockedMessageToOptionalMockedMessageDTO(Optional<MockedMessage> optionalMockedMessage){
        return optionalMockedMessage.map(this::mockedMessageToMockedMessageDto);
    }

    default Optional<MockedMessage> optionalMockedMessageDTOToOptionalMockedMessage(Optional<MockedMessageDto> optionalMockedMessageDto){
        return optionalMockedMessageDto.map(this::mockedMessageDtoToMockedMessage);
    }
}
