Changeset 2ce7c1e
- Timestamp:
- 02/05/26 21:26:46 (5 months ago)
- Branches:
- main
- Children:
- b071fb4
- Parents:
- cb4a1da
- Location:
- finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository
- Files:
-
- 11 edited
-
AlbumRepository.java (modified) (1 diff)
-
ArtistContributionRepository.java (modified) (1 diff)
-
ArtistRepository.java (modified) (1 diff)
-
FollowRepository.java (modified) (2 diffs)
-
LikeRepository.java (modified) (2 diffs)
-
ListenerRepository.java (modified) (1 diff)
-
NonAdminUserRepository.java (modified) (1 diff)
-
PlaylistRepository.java (modified) (1 diff)
-
SavedPlaylistRepository.java (modified) (1 diff)
-
SongRepository.java (modified) (2 diffs)
-
UserRepository.java (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/AlbumRepository.java
rcb4a1da r2ce7c1e 16 16 List<Album>findAllByIdIn(List<Long>ids); 17 17 18 19 18 @Query(""" 20 SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto(19 SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto( 21 20 a.id, me.title, me.genre, 'ALBUM', u.fullName, me.cover, FALSE ) 22 FROM Album a 23 JOIN a.musicalEntities me 24 JOIN me.releasedBy rb 25 JOIN rb.nonAdminUser nau 26 JOIN nau.user u 27 WHERE me.title ILIKE %:searchTerm% 28 """ 29 ) 21 FROM Album a 22 JOIN a.musicalEntities me 23 JOIN me.releasedBy rb 24 JOIN rb.nonAdminUser nau 25 JOIN nau.user u 26 WHERE me.title ILIKE '%' || :searchTerm || '%' 27 """) 30 28 List<MusicalEntityDto> searchAlbums(@Param("currentUserId")Long currentUserId, @Param("searchTerm") String searchTerm); 31 29 -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/ArtistContributionRepository.java
rcb4a1da r2ce7c1e 14 14 public interface ArtistContributionRepository extends JpaRepository<ArtistContribution, ArtistContributionId> { 15 15 16 @Query(" SELECT NEW com.ukim.finki.develop.finkwave.model.dto.ArtistContributionDto( ac.musicalEntity.id," +17 "ac.musicalEntity.title," +18 "ac.musicalEntity.genre," +19 "ac.role, " +20 "CASE WHEN s.id IS NOT NULL THEN 'SONG' " +21 "WHEN a.id IS NOT NULL THEN 'ALBUM' " +22 "ELSE 'Unknown' END," +23 "(CASE WHEN l.id IS NOT NULL THEN true ELSE false END)) " +24 "FROM ArtistContribution ac " +25 "LEFT JOIN Song s ON s.musicalEntities.id=ac.musicalEntity.id " +26 "LEFT JOIN Album a ON a.musicalEntities.id=ac.musicalEntity.id " +27 "LEFT JOIN Like l ON l.musicalEntity.id=ac.musicalEntity.id AND l.listener.id=:currentUserId " +28 "WHERE ac.artist.id=:artistId")16 @Query(""" 17 SELECT NEW com.ukim.finki.develop.finkwave.model.dto.ArtistContributionDto( 18 ac.musicalEntity.id, ac.musicalEntity.title, ac.musicalEntity.genre, ac.role, 19 (CASE WHEN s.id IS NOT NULL THEN 'SONG' 20 WHEN a.id IS NOT NULL THEN 'ALBUM' 21 ELSE 'Unknown' END), 22 (CASE WHEN l.id IS NOT NULL THEN true ELSE false END)) 23 FROM ArtistContribution ac 24 LEFT JOIN Song s ON s.musicalEntities.id=ac.musicalEntity.id 25 LEFT JOIN Album a ON a.musicalEntities.id=ac.musicalEntity.id 26 LEFT JOIN Like l ON l.musicalEntity.id=ac.musicalEntity.id AND l.listener.id=:currentUserId 27 WHERE ac.artist.id=:artistId 28 """) 29 29 List<ArtistContributionDto>findContributionsByArtistId(@Param("currentUserId")Long currentUserId,@Param("artistId")Long artistId); 30 30 } -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/ArtistRepository.java
rcb4a1da r2ce7c1e 13 13 public interface ArtistRepository extends JpaRepository<Artist, Long> { 14 14 15 @Query("SELECT DISTINCT a FROM Artist a "+ 16 "JOIN FETCH a.nonAdminUser nu "+ 17 "JOIN FETCH nu.user "+ 18 "WHERE a.id=:artistId") 15 @Query(""" 16 SELECT DISTINCT a FROM Artist a 17 JOIN FETCH a.nonAdminUser nu 18 JOIN FETCH nu.user 19 WHERE a.id=:artistId 20 """) 19 21 Optional<Artist>findByIdWithUser(@Param("artistId")Long artistId); 20 22 21 @Query("SELECT a FROM Artist a " + 22 "JOIN FETCH a.nonAdminUser nau " + 23 "JOIN FETCH nau.user u " + 24 "WHERE u.username = :username") 23 @Query(""" 24 SELECT a FROM Artist a 25 JOIN FETCH a.nonAdminUser nau 26 JOIN FETCH nau.user u 27 WHERE u.username = :username 28 """) 25 29 Optional<Artist> findByUsername(@Param("username") String username); 26 30 -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/FollowRepository.java
rcb4a1da r2ce7c1e 20 20 long countByFollowerId(Long userId); 21 21 22 @Query("SELECT CASE WHEN COUNT (f)>0 THEN true ELSE false END " + 23 "FROM Follow f "+ 24 "WHERE f.followee.id=:selectedUserId AND f.follower.id=:currentUserId") 22 @Query(""" 23 SELECT CASE WHEN COUNT (f)>0 THEN true ELSE false END 24 FROM Follow f 25 WHERE f.followee.id=:selectedUserId AND f.follower.id=:currentUserId 26 """) 25 27 boolean isFollowing(@Param("currentUserId") Long currentUSerId,@Param("selectedUserId")Long selectedUserId); 26 28 … … 28 30 List<Follow>getFollowsByFollower_Id(Long id); 29 31 30 @Query("SELECT f FROM Follow f " + 31 "JOIN FETCH f.follower nu " + 32 "JOIN FETCH nu.user " + 33 "WHERE f.followee.id = :id") 32 @Query(""" 33 SELECT f FROM Follow f 34 JOIN FETCH f.follower nu 35 JOIN FETCH nu.user 36 WHERE f.followee.id = :id 37 """) 34 38 List<Follow> findFollowersWithProfile(@Param("id") Long id); 35 39 36 @Query("SELECT f FROM Follow f " + 37 "JOIN FETCH f.followee nu " + 38 "JOIN FETCH nu.user " + 39 "WHERE f.follower.id = :id") 40 @Query(""" 41 SELECT f FROM Follow f 42 JOIN FETCH f.followee nu 43 JOIN FETCH nu.user 44 WHERE f.follower.id = :id 45 """) 40 46 List<Follow> findFollowingWithProfile(@Param("id") Long id); 41 47 -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/LikeRepository.java
rcb4a1da r2ce7c1e 1 1 package com.ukim.finki.develop.finkwave.repository; 2 2 3 import com.ukim.finki.develop.finkwave.model.MusicalEntity;4 3 import com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto; 5 4 import org.springframework.data.jpa.repository.JpaRepository; … … 15 14 @Repository 16 15 public interface LikeRepository extends JpaRepository<Like, LikeId> { 17 @Query("SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto(" + 18 "me.id, " + 19 "me.title, " + 20 "me.genre, " + 21 "CASE WHEN s.id IS NOT NULL THEN 'SONG' " + 22 " WHEN a.id IS NOT NULL THEN 'ALBUM' " + 23 " ELSE 'UNKNOWN' END, " + 24 "u.fullName, " + 25 "(CASE WHEN currentUserLike.id IS NOT NULL THEN true ELSE false END)" + 26 ") " + 27 "FROM Like l " + 28 "JOIN l.musicalEntity me " + 29 "JOIN me.releasedBy nu " + 30 "JOIN nu.nonAdminUser.user u " + 31 "LEFT JOIN Song s ON s.musicalEntities.id = me.id " + 32 "LEFT JOIN Album a ON a.musicalEntities.id = me.id " + 33 "LEFT JOIN Like currentUserLike ON currentUserLike.musicalEntity.id = me.id " + 34 "AND currentUserLike.listener.id = :currentUserId " + 35 "WHERE l.listener.id = :listenerId") 16 @Query(""" 17 SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto( 18 me.id, 19 me.title, 20 me.genre, 21 (CASE WHEN s.id IS NOT NULL THEN 'SONG' 22 WHEN a.id IS NOT NULL THEN 'ALBUM' 23 ELSE 'UNKNOWN' END), 24 u.fullName, 25 (CASE WHEN currentUserLike.id IS NOT NULL THEN true ELSE false END)) 26 FROM Like l 27 JOIN l.musicalEntity me 28 JOIN me.releasedBy nu 29 JOIN nu.nonAdminUser.user u 30 LEFT JOIN Song s ON s.musicalEntities.id = me.id 31 LEFT JOIN Album a ON a.musicalEntities.id = me.id 32 LEFT JOIN Like currentUserLike ON currentUserLike.musicalEntity.id = me.id 33 AND currentUserLike.listener.id = :currentUserId 34 WHERE l.listener.id = :listenerId 35 """) 36 36 List<MusicalEntityDto> findLikedEntitiesWithTypeByListenerId(@Param("currentUserId")Long currentUserId,@Param("listenerId") Long listenerId); 37 37 38 38 39 @Query(" SELECT CASE WHEN COUNT (l)>0 THEN true ELSE false END " +40 "FROM MusicalEntity me " +41 "JOIN Like l on l.musicalEntity.id=me.id " +42 "WHERE l.listener.id=:userId"43 44 )39 @Query(""" 40 SELECT CASE WHEN COUNT (l)>0 THEN true ELSE false END 41 FROM MusicalEntity me 42 JOIN Like l on l.musicalEntity.id=me.id 43 WHERE l.listener.id=:userId 44 """) 45 45 boolean isLikedByUser(@Param("userId") Long userId); 46 46 } -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/ListenerRepository.java
rcb4a1da r2ce7c1e 12 12 @Repository 13 13 public interface ListenerRepository extends JpaRepository<Listener, Long> { 14 @Query("SELECT DISTINCT l FROM Listener l " + 15 "JOIN FETCH l.nonAdminUser nu " + 16 "JOIN FETCH nu.user " + 17 "WHERE l.id = :listenerId") 14 @Query(""" 15 SELECT DISTINCT l FROM Listener l 16 JOIN FETCH l.nonAdminUser nu 17 JOIN FETCH nu.user 18 WHERE l.id = :listenerId 19 """) 18 20 Optional<Listener> findByIdWithUser(@Param("listenerId") Long listenerId); 19 21 20 @Query("SELECT l FROM Listener l " + 21 "JOIN FETCH l.nonAdminUser nu " + 22 "JOIN FETCH nu.user u " + 23 "WHERE u.username=:username") 24 22 @Query(""" 23 SELECT l FROM Listener l 24 JOIN FETCH l.nonAdminUser nu 25 JOIN FETCH nu.user u 26 WHERE u.username=:username 27 """) 25 28 Optional<Listener>findByUsername(@Param("username")String username); 26 29 } -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/NonAdminUserRepository.java
rcb4a1da r2ce7c1e 14 14 public interface NonAdminUserRepository extends JpaRepository<NonAdminUser, Long> { 15 15 16 @Query("SELECT n FROM NonAdminUser n JOIN FETCH n.user") 16 @Query(""" 17 SELECT n FROM NonAdminUser n JOIN FETCH n.user 18 """) 17 19 List<NonAdminUser> findAllWithUser(); 18 20 19 @Query("SELECT u FROM NonAdminUser u " + 20 "WHERE u.user.fullName ILIKE CONCAT('%', :name, '%' ) "+ 21 "OR u.user.username ILIKE CONCAT('%', :name, '%' ) ") 21 @Query(""" 22 SELECT u FROM NonAdminUser u 23 WHERE u.user.fullName ILIKE '%' || :name || '%' 24 OR u.user.username ILIKE '%' || :name || '%' 25 """) 22 26 List<NonAdminUser> searchByName(String name); 23 27 24 @Query("SELECT nau FROM NonAdminUser nau " + 25 "JOIN FETCH nau.user u " + 26 "WHERE u.username = :username") 28 @Query(""" 29 SELECT nau FROM NonAdminUser nau 30 JOIN FETCH nau.user u 31 WHERE u.username = :username 32 """) 27 33 Optional<NonAdminUser> findByUsername(@Param("username") String username); 28 34 -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/PlaylistRepository.java
rcb4a1da r2ce7c1e 14 14 15 15 16 @Query("SELECT DISTINCT p FROM Playlist p " + 17 "JOIN FETCH p.createdBy l " + 18 "JOIN FETCH l.nonAdminUser nu " + 19 "JOIN FETCH nu.user u " + 20 "WHERE l.id = :creatorId") 16 @Query(""" 17 SELECT DISTINCT p FROM Playlist p 18 JOIN FETCH p.createdBy l 19 JOIN FETCH l.nonAdminUser nu 20 JOIN FETCH nu.user u 21 WHERE l.id = :creatorId 22 """) 21 23 List<Playlist> findByCreatorId(@Param("creatorId") Long creatorId); 22 24 -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/SavedPlaylistRepository.java
rcb4a1da r2ce7c1e 17 17 List<SavedPlaylist>findAllByListener_Id(Long currentUserId); 18 18 19 @Query("SELECT p FROM SavedPlaylist sp " + 20 "JOIN sp.playlist p " + 21 "JOIN FETCH p.createdBy l " + 22 "JOIN FETCH l.nonAdminUser nau " + 23 "JOIN FETCH nau.user u " + 24 "WHERE sp.id.listenerId = :listenerId") 19 @Query(""" 20 SELECT p FROM SavedPlaylist sp 21 JOIN sp.playlist p 22 JOIN FETCH p.createdBy l 23 JOIN FETCH l.nonAdminUser nau 24 JOIN FETCH nau.user u 25 WHERE sp.id.listenerId = :listenerId 26 """) 25 27 List<Playlist> findSavedPlaylistsMetadata(@Param("listenerId") Long listenerId); 26 28 } -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/SongRepository.java
rcb4a1da r2ce7c1e 16 16 17 17 @Query(""" 18 SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto( 19 s.id, me.title, me.genre, 'SONG', u.fullName, me.cover, 20 (CASE WHEN :currentUserId IS NOT NULL AND l.id IS NOT NULL THEN true ELSE false END) 21 ) 22 FROM Song s 23 JOIN s.musicalEntities me 24 JOIN me.releasedBy a 25 JOIN a.nonAdminUser nau 26 JOIN nau.user u 27 LEFT JOIN Like l ON l.musicalEntity.id = s.id AND l.listener.id = :currentUserId 28 WHERE s.album.id = :albumId 29 """ 30 ) 18 SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto( 19 s.id, me.title, me.genre, 'SONG', u.fullName, me.cover, 20 (CASE WHEN :currentUserId IS NOT NULL AND l.id IS NOT NULL THEN true ELSE false END) 21 ) 22 FROM Song s 23 JOIN s.musicalEntities me 24 JOIN me.releasedBy a 25 JOIN a.nonAdminUser nau 26 JOIN nau.user u 27 LEFT JOIN Like l ON l.musicalEntity.id = s.id AND l.listener.id = :currentUserId 28 WHERE s.album.id = :albumId 29 """) 31 30 List<MusicalEntityDto>findSongsByAlbum(@Param("albumId") Long albumId, @Param("currentUserId")Long currentUserId); 32 31 33 32 34 33 @Query(""" 35 SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto(34 SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto( 36 35 s.id, me.title, me.genre, 'SONG', u.fullName, me.cover, 37 36 (CASE WHEN :currentUserId IS NOT NULL AND l.id IS NOT NULL THEN true ELSE false END)) 38 FROM Song s39 JOIN s.musicalEntities me40 JOIN me.releasedBy a41 JOIN a.nonAdminUser nau42 JOIN nau.user u43 JOIN PlaylistSong ps ON ps.song.id=s.id44 LEFT JOIN Like l ON l.musicalEntity.id=s.id AND l.listener.id=:currentUserId45 WHERE ps.playlist.id=:playlistId37 FROM Song s 38 JOIN s.musicalEntities me 39 JOIN me.releasedBy a 40 JOIN a.nonAdminUser nau 41 JOIN nau.user u 42 JOIN PlaylistSong ps ON ps.song.id=s.id 43 LEFT JOIN Like l ON l.musicalEntity.id=s.id AND l.listener.id=:currentUserId 44 WHERE ps.playlist.id=:playlistId 46 45 """) 47 46 List<MusicalEntityDto>findSongsByPlaylistId(@Param("playlistId")Long playlistId, @Param("currentUserId")Long currentUserId); 48 47 49 48 @Query(""" 50 SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto( 51 s.id, me.title, me.genre, 'SONG', u.fullName, me.cover, FALSE) 52 FROM Song s 53 JOIN s.musicalEntities me 54 JOIN me.releasedBy a 55 JOIN a.nonAdminUser nau 56 JOIN nau.user u 57 JOIN Listen l on l.song.id = s.id 58 GROUP BY s.id, me.title, me.genre, u.fullName, me.cover 59 ORDER BY count(*) desc 60 """ 61 ) 49 SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto( 50 s.id, me.title, me.genre, 'SONG', u.fullName, me.cover, FALSE) 51 FROM Song s 52 JOIN s.musicalEntities me 53 JOIN me.releasedBy a 54 JOIN a.nonAdminUser nau 55 JOIN nau.user u 56 JOIN Listen l on l.song.id = s.id 57 GROUP BY s.id, me.title, me.genre, u.fullName, me.cover 58 ORDER BY count(*) desc 59 """) 62 60 // todo: handle likes, momentalno site se false za da raboti joinot 63 61 // todo: add paging … … 67 65 // todo: fix is liked by user, currently returns hard coded false 68 66 @Query(""" 69 SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto(67 SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto( 70 68 s.id, me.title, me.genre, 'SONG', u.fullName, me.cover, FALSE ) 71 FROM Song s 72 JOIN s.musicalEntities me 73 JOIN me.releasedBy a 74 JOIN a.nonAdminUser nau 75 JOIN nau.user u 76 WHERE me.title ILIKE %:searchTerm% 77 """ 78 ) 69 FROM Song s 70 JOIN s.musicalEntities me 71 JOIN me.releasedBy a 72 JOIN a.nonAdminUser nau 73 JOIN nau.user u 74 WHERE me.title ILIKE %:searchTerm% 75 """) 79 76 List<MusicalEntityDto> searchSongs(@Param("currentUserId")Long currentUserId, @Param("searchTerm") String searchTerm); 80 77 -
finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/UserRepository.java
rcb4a1da r2ce7c1e 16 16 @Query(""" 17 17 SELECT u from User u 18 WHERE (u.fullName ilike %:searchTerm% or u.username ilike %:searchTerm%)19 and u.listener = true and u.artist = false 18 WHERE (u.fullName ILIKE '%' || :searchTerm || '%' or u.username ILIKE '%' || :searchTerm || '%') 19 and u.listener = true and u.artist = false 20 20 """) 21 21 List<User> searchListeners(String searchTerm); … … 23 23 @Query(""" 24 24 SELECT u from User u 25 WHERE (u.fullName ilike %:searchTerm% or u.username ilike %:searchTerm%)25 WHERE (u.fullName ILIKE '%' || :searchTerm || '%' or u.username ILIKE '%' || :searchTerm || '%') 26 26 and u.artist = true 27 27 """)
Note:
See TracChangeset
for help on using the changeset viewer.
