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

main
Last change on this file since 3c0f9a9 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
Line 
1package com.wediscussmovies.project.service.impl;
2
3import com.wediscussmovies.project.model.User;
4import com.wediscussmovies.project.model.exception.GenreNotExistException;
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;
10import com.wediscussmovies.project.querymodels.GenreLikes;
11import com.wediscussmovies.project.repository.GenreLikesRepository;
12import com.wediscussmovies.project.repository.GenreRepository;
13import com.wediscussmovies.project.model.Genre;
14import com.wediscussmovies.project.repository.UserRepository;
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;
23 private final UserRepository userRepository;
24 private final GenreLikesRepository genreLikesRepository;
25
26
27 public GenreServiceImpl(GenreRepository genreRepository, UserRepository userRepository, GenreLikesRepository genreLikesRepository) {
28 this.genreRepository = genreRepository;
29 this.userRepository = userRepository;
30 this.genreLikesRepository = genreLikesRepository;
31 }
32
33 @Override
34 public Genre findById(Integer id) {
35 return this.genreRepository.findById(id).orElseThrow(() -> new GenreNotExistException(id));
36 }
37
38 @Override
39 public List<Genre> findAllByType(String genre) {
40 return this.genreRepository.findAllByGenreType(genre);
41 }
42
43 @Override
44 public Genre save(String genreName) {
45 Genre genre = new Genre(genreName);
46 return this.genreRepository.save(genre);
47 }
48
49 @Override
50 public List<GenreLikes> findAllWithLikes() {
51 List<GenreLikes> genreLikesList = this.genreRepository.findAllWithLikes();
52 genreLikesList.sort(GenreLikes.sorter);
53 return genreLikesList;
54 }
55
56 @Override
57 public List<Genre> findAll() {
58 return this.genreRepository.findAll();
59 }
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 }
73}
Note: See TracBrowser for help on using the repository browser.