1 | package com.wediscussmovies.project.repository;
|
---|
2 |
|
---|
3 | import com.wediscussmovies.project.model.Movie;
|
---|
4 | import com.wediscussmovies.project.model.Person;
|
---|
5 | import com.wediscussmovies.project.querymodels.GenreLikes;
|
---|
6 | import com.wediscussmovies.project.querymodels.MovieLikesQM;
|
---|
7 | import org.springframework.data.jpa.repository.JpaRepository;
|
---|
8 | import org.springframework.data.jpa.repository.Query;
|
---|
9 | import org.springframework.data.repository.query.Param;
|
---|
10 | import org.springframework.stereotype.Repository;
|
---|
11 |
|
---|
12 | import javax.transaction.Transactional;
|
---|
13 | import java.util.List;
|
---|
14 | import java.util.Optional;
|
---|
15 |
|
---|
16 | @Repository
|
---|
17 | public interface MovieRepository extends JpaRepository<Movie, Integer> {
|
---|
18 | List<Movie> findAllByTitleLike(String Title);
|
---|
19 | List<Movie> findAllByDirector(Person director);
|
---|
20 | List<Movie> findAllByDirectorIsNull();
|
---|
21 | @Query(value="select m.movieId from Movie m")
|
---|
22 | List<Integer> findAllMovieIds();
|
---|
23 |
|
---|
24 | @Query(value="select new com.wediscussmovies.project.model.Movie(m.movieId, m.title, m.imdbRating, m.imageUrl) from Movie m" +
|
---|
25 | " where m.movieId = :index")
|
---|
26 | Optional<Movie> findBasicById(@Param("index")Integer index);
|
---|
27 |
|
---|
28 |
|
---|
29 | @Query(value = "select new com.wediscussmovies.project.querymodels.MovieLikesQM(m.movieId, count(ml.id.userId)) from Movie m" +
|
---|
30 | " left join MovieLikes ml on ml.id.movieId = m.movieId" +
|
---|
31 | " group by m.movieId" +
|
---|
32 | " order by count(ml.id.userId) desc")
|
---|
33 | @Transactional
|
---|
34 | List<MovieLikesQM> findAllWithLikes();
|
---|
35 |
|
---|
36 | @Query(value = "select new com.wediscussmovies.project.querymodels.MovieLikesQM(m.movieId, count(ml.id.userId)) from Movie m" +
|
---|
37 | " left join MovieLikes ml on ml.id.movieId = m.movieId" +
|
---|
38 | " group by m.movieId" +
|
---|
39 | " having m.movieId = :id")
|
---|
40 | @Transactional
|
---|
41 | List<MovieLikesQM> findLikesForMovie(@Param("id") Integer movie_id);
|
---|
42 |
|
---|
43 |
|
---|
44 | }
|
---|