[6e7b472] | 1 | package com.wediscussmovies.project.repository;
|
---|
| 2 |
|
---|
[e0ef1b1] | 3 | import com.wediscussmovies.project.model.Movie;
|
---|
| 4 | import com.wediscussmovies.project.model.Person;
|
---|
[c02189f] | 5 | import com.wediscussmovies.project.querymodels.GenreLikes;
|
---|
| 6 | import com.wediscussmovies.project.querymodels.MovieLikesQM;
|
---|
[6e7b472] | 7 | import org.springframework.data.jpa.repository.JpaRepository;
|
---|
[3c0f9a9] | 8 | import org.springframework.data.jpa.repository.Query;
|
---|
[c02189f] | 9 | import org.springframework.data.repository.query.Param;
|
---|
[6e7b472] | 10 | import org.springframework.stereotype.Repository;
|
---|
| 11 |
|
---|
[c02189f] | 12 | import javax.transaction.Transactional;
|
---|
[6e7b472] | 13 | import java.util.List;
|
---|
[c02189f] | 14 | import java.util.Optional;
|
---|
[6e7b472] | 15 |
|
---|
| 16 | @Repository
|
---|
| 17 | public interface MovieRepository extends JpaRepository<Movie, Integer> {
|
---|
[e0ef1b1] | 18 | List<Movie> findAllByTitleLike(String Title);
|
---|
| 19 | List<Movie> findAllByDirector(Person director);
|
---|
| 20 | List<Movie> findAllByDirectorIsNull();
|
---|
[3c0f9a9] | 21 | @Query(value="select m.movieId from Movie m")
|
---|
| 22 | List<Integer> findAllMovieIds();
|
---|
[c02189f] | 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 |
|
---|
[6e7b472] | 44 | }
|
---|