source: Git/src/main/java/com/wediscussmovies/project/service/impl/GenreServiceImpl.java@ ad4243e

main
Last change on this file since ad4243e was 3c0f9a9, checked in by Petar Partaloski <ppartaloski@…>, 2 years ago

Added genre liking, fixed counter, improved paging, improved searches

  • Property mode set to 100644
File size: 2.8 KB
RevLine 
[7a0bf79]1package com.wediscussmovies.project.service.impl;
2
[3c0f9a9]3import com.wediscussmovies.project.model.User;
[e0ef1b1]4import com.wediscussmovies.project.model.exception.GenreNotExistException;
[3c0f9a9]5import com.wediscussmovies.project.model.exception.UserNotExistException;
6import com.wediscussmovies.project.model.primarykeys.GenreLikesPK;
7import com.wediscussmovies.project.model.primarykeys.UserGenresPK;
8import com.wediscussmovies.project.model.relation.MovieLikes;
9import com.wediscussmovies.project.model.relation.UserGenres;
[e0ef1b1]10import com.wediscussmovies.project.querymodels.GenreLikes;
[3c0f9a9]11import com.wediscussmovies.project.repository.GenreLikesRepository;
[7a0bf79]12import com.wediscussmovies.project.repository.GenreRepository;
[e0ef1b1]13import com.wediscussmovies.project.model.Genre;
[3c0f9a9]14import com.wediscussmovies.project.repository.UserRepository;
[7a0bf79]15import com.wediscussmovies.project.service.GenreService;
16import org.springframework.stereotype.Service;
17
18import java.util.List;
19
20@Service
21public 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}
Note: See TracBrowser for help on using the repository browser.