RedirectService.java
package se.jobtechdev.personaldatagateway.api.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import se.jobtechdev.personaldatagateway.api.generated.entities.ClientEntity;
import se.jobtechdev.personaldatagateway.api.generated.entities.RedirectEntity;
import se.jobtechdev.personaldatagateway.api.repository.RedirectRepository;
import se.jobtechdev.personaldatagateway.api.util.TimeProvider;
import se.jobtechdev.personaldatagateway.api.util.UuidProvider;
import java.net.URL;
import java.util.Optional;
import java.util.UUID;
@Component
public class RedirectService {
private final RedirectRepository redirectRepository;
@SuppressWarnings("unused")
@Autowired
public RedirectService(RedirectRepository redirectRepository) {
this.redirectRepository = redirectRepository;
}
@Transactional
public RedirectEntity createRedirect(URL url, ClientEntity client) {
final var redirectId = UuidProvider.uuid();
final var now = TimeProvider.now();
final var redirect = new RedirectEntity(redirectId, client, url, now, now);
return redirectRepository.save(redirect);
}
public Page<RedirectEntity> getRedirects(ClientEntity clientEntity, Pageable pageable) {
return redirectRepository.findByClientEntity(clientEntity, pageable);
}
public Optional<RedirectEntity> getRedirectById(UUID redirectId) {
return redirectRepository.findById(redirectId);
}
@Transactional
public RedirectEntity update(RedirectEntity redirect) {
final var updated = TimeProvider.now();
redirect.setUpdated(updated);
return redirectRepository.save(redirect);
}
}