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.CreateDomainTemplateRequest;
11 import fr.tiogars.inception.domains.domaintemplate.models.DomainTemplate;
12 import fr.tiogars.inception.domains.domaintemplate.repositories.DomainTemplateRepository;
13
14
15
16
17
18
19 @Service
20 public class DomainTemplateCreateService {
21
22 private final DomainTemplateRepository repository;
23
24
25
26
27
28
29 @Autowired
30 public DomainTemplateCreateService(DomainTemplateRepository repository) {
31 this.repository = repository;
32 }
33
34
35
36
37
38
39
40 @Transactional
41 public Optional<DomainTemplate> create(CreateDomainTemplateRequest request) {
42 if (repository.findByCode(request.code()).isPresent()) {
43 return Optional.empty();
44 }
45 DomainTemplateEntity entity = new DomainTemplateEntity(
46 request.code(), request.label(), request.description());
47 return Optional.of(toRecord(repository.saveAndFlush(entity)));
48 }
49
50 private static DomainTemplate toRecord(DomainTemplateEntity entity) {
51 return new DomainTemplate(
52 entity.getId(),
53 entity.getCode(),
54 entity.getLabel(),
55 entity.getDescription(),
56 entity.getCreatedDate(),
57 entity.getLastModifiedDate(),
58 entity.getCreatedBy(),
59 entity.getLastModifiedBy());
60 }
61 }