SettlementMapper.java

package com.github.jenkaby.bikerental.rental.web.command.mapper;

import com.github.jenkaby.bikerental.finance.SettlementInfo;
import com.github.jenkaby.bikerental.rental.web.command.dto.SettlementResponse;
import com.github.jenkaby.bikerental.shared.domain.TransactionRef;
import org.mapstruct.Mapper;

import java.util.List;
import java.util.UUID;

@Mapper
public interface SettlementMapper {

    SettlementResponse toResponse(SettlementInfo source);

    default List<UUID> toUuidList(List<TransactionRef> source) {
        if (source == null) {
            return null;
        }
        return source.stream()
                .map(SettlementMapper::toUuid)
                .toList();
    }

    static UUID toUuid(TransactionRef source) {
        return source != null ? source.id() : null;
    }
}