1 | package com.wediscussmovies.project.repository;
|
---|
2 |
|
---|
3 | import com.wediscussmovies.project.model.Genre;
|
---|
4 | import com.wediscussmovies.project.querymodels.GenreLikesQM;
|
---|
5 | import org.springframework.data.jpa.repository.JpaRepository;
|
---|
6 | import org.springframework.data.jpa.repository.Modifying;
|
---|
7 | import org.springframework.data.jpa.repository.Query;
|
---|
8 | import org.springframework.data.repository.query.Param;
|
---|
9 | import org.springframework.stereotype.Repository;
|
---|
10 |
|
---|
11 | import javax.transaction.Transactional;
|
---|
12 | import java.util.List;
|
---|
13 |
|
---|
14 | @Repository
|
---|
15 | public interface GenreRepository extends JpaRepository<Genre, Integer> {
|
---|
16 | List<Genre> findAllByGenreType(String genre);
|
---|
17 |
|
---|
18 | @Query(value = "select new com.wediscussmovies.project.querymodels.GenreLikesQM(g.genreId, g.genreType, count(ug.id.userId)) from Genre g" +
|
---|
19 | " left join UserGenres ug on ug.id.genreId = g.genreId" +
|
---|
20 | " group by g.genreId, g.genreType" +
|
---|
21 | " order by count(ug.id.userId) desc, g.genreType asc")
|
---|
22 | @Transactional
|
---|
23 | List<GenreLikesQM> findAllWithLikes();
|
---|
24 |
|
---|
25 | @Modifying
|
---|
26 | @Query(value = "insert into project.user_genres (user_id,genre_id) values(:user_id,:genre_id)",nativeQuery = true)
|
---|
27 | @Transactional
|
---|
28 | void insertInto(@Param("user_id")Integer userId, @Param("genre_id")Integer genreId);
|
---|
29 |
|
---|
30 | @Query(value = "select new com.wediscussmovies.project.model.Genre (g.genreId, g.genreType) from Genre g" +
|
---|
31 | " ORDER BY g.genreType DESC")
|
---|
32 | List<Genre> findAllSorted();
|
---|
33 | }
|
---|