[7a0bf79] | 1 | package com.wediscussmovies.project.service.impl;
|
---|
| 2 |
|
---|
[3c0f9a9] | 3 | import com.wediscussmovies.project.model.User;
|
---|
[e0ef1b1] | 4 | import com.wediscussmovies.project.model.exception.GenreNotExistException;
|
---|
[3c0f9a9] | 5 | import com.wediscussmovies.project.model.exception.UserNotExistException;
|
---|
| 6 | import com.wediscussmovies.project.model.primarykeys.GenreLikesPK;
|
---|
| 7 | import com.wediscussmovies.project.model.primarykeys.UserGenresPK;
|
---|
| 8 | import com.wediscussmovies.project.model.relation.MovieLikes;
|
---|
| 9 | import com.wediscussmovies.project.model.relation.UserGenres;
|
---|
[e0ef1b1] | 10 | import com.wediscussmovies.project.querymodels.GenreLikes;
|
---|
[3c0f9a9] | 11 | import com.wediscussmovies.project.repository.GenreLikesRepository;
|
---|
[7a0bf79] | 12 | import com.wediscussmovies.project.repository.GenreRepository;
|
---|
[e0ef1b1] | 13 | import com.wediscussmovies.project.model.Genre;
|
---|
[3c0f9a9] | 14 | import com.wediscussmovies.project.repository.UserRepository;
|
---|
[7a0bf79] | 15 | import com.wediscussmovies.project.service.GenreService;
|
---|
| 16 | import org.springframework.stereotype.Service;
|
---|
| 17 |
|
---|
| 18 | import java.util.List;
|
---|
| 19 |
|
---|
| 20 | @Service
|
---|
| 21 | public class GenreServiceImpl implements GenreService {
|
---|
| 22 | private final GenreRepository genreRepository;
|
---|
[3c0f9a9] | 23 | private final UserRepository userRepository;
|
---|
| 24 | private final GenreLikesRepository genreLikesRepository;
|
---|
[7a0bf79] | 25 |
|
---|
[3c0f9a9] | 26 |
|
---|
| 27 | public GenreServiceImpl(GenreRepository genreRepository, UserRepository userRepository, GenreLikesRepository genreLikesRepository) {
|
---|
[7a0bf79] | 28 | this.genreRepository = genreRepository;
|
---|
[3c0f9a9] | 29 | this.userRepository = userRepository;
|
---|
| 30 | this.genreLikesRepository = genreLikesRepository;
|
---|
[7a0bf79] | 31 | }
|
---|
| 32 |
|
---|
| 33 | @Override
|
---|
[e0ef1b1] | 34 | public Genre findById(Integer id) {
|
---|
| 35 | return this.genreRepository.findById(id).orElseThrow(() -> new GenreNotExistException(id));
|
---|
[7a0bf79] | 36 | }
|
---|
| 37 |
|
---|
| 38 | @Override
|
---|
| 39 | public List<Genre> findAllByType(String genre) {
|
---|
[e0ef1b1] | 40 | return this.genreRepository.findAllByGenreType(genre);
|
---|
[7a0bf79] | 41 | }
|
---|
| 42 |
|
---|
| 43 | @Override
|
---|
| 44 | public Genre save(String genreName) {
|
---|
[3ded84d] | 45 | Genre genre = new Genre(genreName);
|
---|
[e0ef1b1] | 46 | return this.genreRepository.save(genre);
|
---|
| 47 | }
|
---|
| 48 |
|
---|
| 49 | @Override
|
---|
| 50 | public List<GenreLikes> findAllWithLikes() {
|
---|
[3c0f9a9] | 51 | List<GenreLikes> genreLikesList = this.genreRepository.findAllWithLikes();
|
---|
| 52 | genreLikesList.sort(GenreLikes.sorter);
|
---|
| 53 | return genreLikesList;
|
---|
[7a0bf79] | 54 | }
|
---|
| 55 |
|
---|
| 56 | @Override
|
---|
| 57 | public List<Genre> findAll() {
|
---|
[e0ef1b1] | 58 | return this.genreRepository.findAll();
|
---|
[7a0bf79] | 59 | }
|
---|
[3c0f9a9] | 60 |
|
---|
| 61 | @Override
|
---|
| 62 | public void likeGenre(Integer genreId, Integer userId) {
|
---|
| 63 | User user = this.userRepository.findById(userId).orElseThrow(() -> new UserNotExistException(userId.toString()));
|
---|
| 64 | Genre genre = this.genreRepository.findById(genreId).orElseThrow(() -> new GenreNotExistException(genreId));
|
---|
| 65 | this.genreLikesRepository.save(new UserGenres(genre, user));
|
---|
| 66 | }
|
---|
| 67 |
|
---|
| 68 | @Override
|
---|
| 69 | public void unlikeGenre(Integer genreId, Integer userId) {
|
---|
| 70 | UserGenresPK movieLikesPK = new UserGenresPK(userId, genreId);
|
---|
| 71 | this.genreLikesRepository.deleteById(movieLikesPK);
|
---|
| 72 | }
|
---|
[7a0bf79] | 73 | }
|
---|