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