1 package fr.tiogars.inception.domains.domaintemplate.services;
2
3 import java.time.Clock;
4 import java.time.Instant;
5 import java.time.temporal.ChronoUnit;
6
7 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.stereotype.Service;
9 import org.springframework.transaction.annotation.Transactional;
10
11 import fr.tiogars.inception.config.SecurityAuditorAware;
12 import fr.tiogars.inception.domains.domaintemplate.repositories.DomainTemplateRepository;
13
14
15 @Service
16 public class DomainTemplateDeleteService {
17
18 private final DomainTemplateRepository repository;
19 private final SecurityAuditorAware auditor;
20 private final Clock clock;
21
22 @Autowired
23 public DomainTemplateDeleteService(DomainTemplateRepository repository, SecurityAuditorAware auditor, Clock clock) {
24 this.repository = repository;
25 this.auditor = auditor;
26 this.clock = clock;
27 }
28
29
30
31
32
33
34
35 @Transactional
36 public boolean delete(Long id) {
37 return repository.findById(id).map(entity -> {
38 entity.softDelete(Instant.now(clock).truncatedTo(ChronoUnit.MICROS),
39 auditor.getCurrentAuditor().orElseThrow());
40 repository.saveAndFlush(entity);
41 return true;
42 }).orElse(false);
43 }
44 }