composite-build-usage-example

Форк
0
70 строк · 2.6 Кб
1
package by.andd3dfx.templateapp.services.impl;
2

3
import by.andd3dfx.templateapp.dto.ArticleDto;
4
import by.andd3dfx.templateapp.dto.ArticleUpdateDto;
5
import by.andd3dfx.templateapp.error.exception.ArticleNotFoundException;
6
import by.andd3dfx.templateapp.mappers.ArticleMapper;
7
import by.andd3dfx.templateapp.persistence.dao.ArticleRepository;
8
import by.andd3dfx.templateapp.persistence.entities.Article;
9
import by.andd3dfx.templateapp.services.IArticleService;
10
import java.util.List;
11
import lombok.RequiredArgsConstructor;
12
import org.springframework.dao.EmptyResultDataAccessException;
13
import org.springframework.data.domain.PageRequest;
14
import org.springframework.data.domain.Pageable;
15
import org.springframework.data.domain.Slice;
16
import org.springframework.data.domain.Sort;
17
import org.springframework.stereotype.Service;
18
import org.springframework.transaction.annotation.Transactional;
19

20
@Service
21
@RequiredArgsConstructor
22
public class ArticleService implements IArticleService {
23

24
    private final ArticleRepository articleRepository;
25
    private final ArticleMapper articleMapper;
26

27
    @Transactional
28
    @Override
29
    public ArticleDto create(ArticleDto articleDto) {
30
        Article entity = articleMapper.toArticle(articleDto);
31
        Article savedEntity = articleRepository.save(entity);
32
        return articleMapper.toArticleDto(savedEntity);
33
    }
34

35
    @Transactional(readOnly = true)
36
    @Override
37
    public ArticleDto get(Long id) {
38
        return articleRepository.findById(id)
39
            .map(articleMapper::toArticleDto)
40
            .orElseThrow(() -> new ArticleNotFoundException(id));
41
    }
42

43
    @Transactional
44
    @Override
45
    public void update(Long id, ArticleUpdateDto articleUpdateDto) {
46
        articleRepository.findById(id)
47
            .map(article -> {
48
                articleMapper.toArticle(articleUpdateDto, article);
49
                Article savedArticle = articleRepository.save(article);
50
                return articleMapper.toArticleDto(savedArticle);
51
            }).orElseThrow(() -> new ArticleNotFoundException(id));
52
    }
53

54
    @Transactional
55
    @Override
56
    public void delete(Long id) {
57
        try {
58
            articleRepository.deleteById(id);
59
        } catch (EmptyResultDataAccessException ex) {
60
            throw new ArticleNotFoundException(id);
61
        }
62
    }
63

64
    @Transactional(readOnly = true)
65
    @Override
66
    public Slice<ArticleDto> getAll(Pageable pageable) {
67
        Slice<Article> pagedResult = articleRepository.findAll(pageable);
68
        return pagedResult.map(articleMapper::toArticleDto);
69
    }
70
}
71

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.