View Javadoc
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  /** Updates existing DomainTemplates. */
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       * Updates the mutable fields of a DomainTemplate.
27       *
28       * @param id      persistent identifier
29       * @param request replacement business data
30       * @return updated template, or an empty optional when it does not exist
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  }