EquipmentStatusRepositoryAdapter.java
package com.github.jenkaby.bikerental.equipment.infrastructure.persistence.adapter;
import com.github.jenkaby.bikerental.equipment.domain.model.EquipmentStatus;
import com.github.jenkaby.bikerental.equipment.domain.repository.EquipmentStatusRepository;
import com.github.jenkaby.bikerental.equipment.infrastructure.persistence.mapper.EquipmentStatusJpaMapper;
import com.github.jenkaby.bikerental.equipment.infrastructure.persistence.repository.EquipmentStatusJpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
@Repository
class EquipmentStatusRepositoryAdapter implements EquipmentStatusRepository {
private final EquipmentStatusJpaRepository jpaRepository;
private final EquipmentStatusJpaMapper mapper;
EquipmentStatusRepositoryAdapter(
EquipmentStatusJpaRepository jpaRepository,
EquipmentStatusJpaMapper mapper) {
this.jpaRepository = jpaRepository;
this.mapper = mapper;
}
@Override
public EquipmentStatus save(EquipmentStatus equipmentStatus) {
var entity = mapper.toEntity(equipmentStatus);
var savedEntity = jpaRepository.save(entity);
return mapper.toDomain(savedEntity);
}
@Override
@Transactional(readOnly = true)
public Optional<EquipmentStatus> findBySlug(String slug) {
return jpaRepository.findBySlug(slug)
.map(mapper::toDomain);
}
@Override
@Transactional(readOnly = true)
public List<EquipmentStatus> findAll() {
return jpaRepository.findAll().stream()
.map(mapper::toDomain)
.toList();
}
@Override
public boolean existsBySlug(String slug) {
return jpaRepository.existsBySlug(slug);
}
}