1 package fr.tiogars.inception.domains.domaintemplate.services;
2
3 import java.util.Optional;
4
5 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.stereotype.Service;
7 import org.springframework.transaction.annotation.Transactional;
8
9 import fr.tiogars.inception.domains.domaintemplate.entities.DomainTemplateEntity;
10 import fr.tiogars.inception.domains.domaintemplate.models.DomainTemplate;
11 import fr.tiogars.inception.domains.domaintemplate.models.UpdateDomainTemplateRequest;
12 import fr.tiogars.inception.domains.domaintemplate.repositories.DomainTemplateRepository;
13
14
15 @Service
16 public class DomainTemplateUpdateService {
17
18 private final DomainTemplateRepository repository;
19
20 @Autowired
21 public DomainTemplateUpdateService(DomainTemplateRepository repository) {
22 this.repository = repository;
23 }
24
25
26
27
28
29
30
31
32 @Transactional
33 public Optional<DomainTemplate> update(Long id, UpdateDomainTemplateRequest request) {
34 return repository.findById(id)
35 .map(existing -> {
36 existing.update(request.label(), request.description());
37 return toRecord(repository.saveAndFlush(existing));
38 });
39 }
40
41 private static DomainTemplate toRecord(DomainTemplateEntity entity) {
42 return new DomainTemplate(
43 entity.getId(),
44 entity.getCode(),
45 entity.getLabel(),
46 entity.getDescription(),
47 entity.getCreatedDate(),
48 entity.getLastModifiedDate(),
49 entity.getCreatedBy(),
50 entity.getLastModifiedBy());
51 }
52 }