Rome4VersionDatabaseRepository.java

package fr.avenirsesr.portfolio.additionalskill.infrastructure.adapter.repository;

import fr.avenirsesr.portfolio.additionalskill.domain.model.Rome4Version;
import fr.avenirsesr.portfolio.additionalskill.domain.port.output.repository.Rome4VersionRepository;
import fr.avenirsesr.portfolio.additionalskill.infrastructure.adapter.mapper.Rome4VersionMapper;
import fr.avenirsesr.portfolio.additionalskill.infrastructure.adapter.model.Rome4VersionEntity;
import fr.avenirsesr.portfolio.shared.infrastructure.adapter.repository.GenericJpaRepositoryAdapter;
import java.util.Optional;
import org.springframework.stereotype.Component;

@Component
public class Rome4VersionDatabaseRepository
    extends GenericJpaRepositoryAdapter<Rome4Version, Rome4VersionEntity>
    implements Rome4VersionRepository {
  private final Rome4VersionJpaRepository jpaRepository;

  public Rome4VersionDatabaseRepository(Rome4VersionJpaRepository jpaRepository) {
    super(
        jpaRepository, jpaRepository, Rome4VersionMapper::fromDomain, Rome4VersionMapper::toDomain);
    this.jpaRepository = jpaRepository;
  }

  @Override
  public Optional<Rome4Version> findFirstByOrderByVersionDesc() {
    return jpaRepository.findFirstByOrderByVersionDesc();
  }
}