TransactionJpaMapper.java
package com.github.jenkaby.bikerental.finance.infrastructure.persistence.mapper;
import com.github.jenkaby.bikerental.finance.domain.model.Transaction;
import com.github.jenkaby.bikerental.finance.infrastructure.persistence.entity.TransactionJpaEntity;
import com.github.jenkaby.bikerental.shared.mapper.IdempotencyKeyMapper;
import com.github.jenkaby.bikerental.shared.mapper.MoneyMapper;
import org.mapstruct.*;
@Mapper(uses = {MoneyMapper.class, IdempotencyKeyMapper.class, TransactionRecordMapper.class})
public interface TransactionJpaMapper {
@Mapping(target = "records", source = "records")
@Mapping(target = "type", source = "transactionType")
Transaction toDomain(TransactionJpaEntity entity);
@InheritInverseConfiguration
TransactionJpaEntity toEntity(Transaction domain);
@AfterMapping
default void setTransactionRelationships(@MappingTarget TransactionJpaEntity result) {
if (result.getRecords() != null) {
result.getRecords().forEach(rec -> rec.setTransaction(result));
}
}
}