FaqService.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.FaqEntity;
import se.jobtechdev.personaldatagateway.api.repository.FaqRepository;
import se.jobtechdev.personaldatagateway.api.util.TimeProvider;
import se.jobtechdev.personaldatagateway.api.util.UuidProvider;
import java.util.Optional;
import java.util.UUID;
@Component
public class FaqService {
private final FaqRepository faqRepository;
@SuppressWarnings("unused")
@Autowired
public FaqService(FaqRepository faqRepository) {
this.faqRepository = faqRepository;
}
public Optional<FaqEntity> getFaqById(UUID faqId) {
return faqRepository.findById(faqId);
}
@Transactional
public FaqEntity update(FaqEntity faq) {
final var updated = TimeProvider.now();
faq.setUpdated(updated);
return faqRepository.save(faq);
}
@Transactional
public FaqEntity createFaq(String lang, String title, String content) {
final var faqId = UuidProvider.uuid();
final var now = TimeProvider.now();
final var faq = new FaqEntity(faqId, lang, title, content, now, now);
return faqRepository.save(faq);
}
@Transactional
public Page<FaqEntity> getOrganizationFaqs(
UUID organizationId, String acceptLanguage, Pageable pageable) {
return faqRepository.findByOrganizationIdAndLang(organizationId, acceptLanguage, pageable);
}
@Transactional
public Page<FaqEntity> getDatasourceFaqs(UUID datasourceId, String acceptLanguage, Pageable pageable) {
return faqRepository.findByDatasourceIdAndLang(datasourceId, acceptLanguage, pageable);
}
}