Package com.espacogeek.geek.repositories
Interface UserMediaListRepository
- All Superinterfaces:
org.springframework.data.repository.CrudRepository<UserMediaListModel,,UUID> org.springframework.data.jpa.repository.JpaRepository<UserMediaListModel,,UUID> org.springframework.data.repository.ListCrudRepository<UserMediaListModel,,UUID> org.springframework.data.repository.ListPagingAndSortingRepository<UserMediaListModel,,UUID> org.springframework.data.repository.PagingAndSortingRepository<UserMediaListModel,,UUID> org.springframework.data.repository.query.QueryByExampleExecutor<UserMediaListModel>,org.springframework.data.repository.Repository<UserMediaListModel,UUID>
public interface UserMediaListRepository
extends org.springframework.data.jpa.repository.JpaRepository<UserMediaListModel,UUID>
-
Method Summary
Modifier and TypeMethodDescriptionlongdeleteByUserIdAndMediaId(Integer userId, Integer mediaId) Deletes the entry for the given user and media, returning the number of rows deleted.booleanexistsByUserIdAndMediaId(Integer userId, Integer mediaId) Returnstrueif an entry already exists for the given user and media.findByUserIdAndMediaId(Integer userId, Integer mediaId) Returns the entry for the given user and media, if present.findByUserIdWithFilters(Integer userId, String status, Integer statusId, Integer categoryId, CategoryType categoryName, Integer genreId, String genreName, Integer mediaId, String mediaName, String altTitle) Fetches library entries for a given user with optional filters on: status string, status ID (media's production status), media category ID, category name, genre ID, genre name, media ID, media name, and alternative title.Methods inherited from interface org.springframework.data.repository.CrudRepository
count, delete, deleteAll, deleteAll, deleteAllById, deleteById, existsById, findById, saveMethods inherited from interface org.springframework.data.jpa.repository.JpaRepository
deleteAllByIdInBatch, deleteAllInBatch, deleteAllInBatch, deleteInBatch, findAll, findAll, flush, getById, getOne, getReferenceById, saveAllAndFlush, saveAndFlushMethods inherited from interface org.springframework.data.repository.ListCrudRepository
findAll, findAllById, saveAllMethods inherited from interface org.springframework.data.repository.ListPagingAndSortingRepository
findAllMethods inherited from interface org.springframework.data.repository.PagingAndSortingRepository
findAllMethods inherited from interface org.springframework.data.repository.query.QueryByExampleExecutor
count, exists, findAll, findBy, findOne
-
Method Details
-
findByUserIdWithFilters
@Query("SELECT DISTINCT u FROM UserMediaListModel u JOIN u.media m WHERE u.user.id = :userId AND (:status IS NULL OR LOWER(u.status) = LOWER(:status)) AND (:statusId IS NULL OR (m.mediaStatus IS NOT NULL AND m.mediaStatus.id = :statusId)) AND (:categoryId IS NULL OR m.mediaCategory.id = :categoryId) AND (:categoryName IS NULL OR m.mediaCategory.name = :categoryName) AND (:genreId IS NULL OR EXISTS (SELECT 1 FROM GenreModel g WHERE g MEMBER OF m.genre AND g.id = :genreId)) AND (:genreName IS NULL OR EXISTS (SELECT 1 FROM GenreModel g WHERE g MEMBER OF m.genre AND LOWER(g.name) = LOWER(:genreName))) AND (:mediaId IS NULL OR m.id = :mediaId) AND (:mediaName IS NULL OR LOWER(m.name) LIKE LOWER(CONCAT(\'%\', :mediaName, \'%\'))) AND (:altTitle IS NULL OR EXISTS (SELECT 1 FROM AlternativeTitleModel a WHERE a.media = m AND LOWER(a.name) LIKE LOWER(CONCAT(\'%\', :altTitle, \'%\'))))") List<UserMediaListModel> findByUserIdWithFilters(@Param("userId") Integer userId, @Param("status") String status, @Param("statusId") Integer statusId, @Param("categoryId") Integer categoryId, @Param("categoryName") CategoryType categoryName, @Param("genreId") Integer genreId, @Param("genreName") String genreName, @Param("mediaId") Integer mediaId, @Param("mediaName") String mediaName, @Param("altTitle") String altTitle) Fetches library entries for a given user with optional filters on: status string, status ID (media's production status), media category ID, category name, genre ID, genre name, media ID, media name, and alternative title.- Parameters:
userId- the ID of the authenticated user (required)status- optional user tracking status string filter (case-insensitive exact match)statusId- optional media production status ID filter (MediaStatusModel.id, Integer)categoryId- optional media category ID filtercategoryName- optional media category name filter (enum exact match)genreId- optional genre ID filtergenreName- optional genre name filter (case-insensitive exact match)mediaId- optional media ID filtermediaName- optional media name filter (case-insensitive partial match)altTitle- optional alternative title filter (case-insensitive partial match)- Returns:
- a distinct list of matching library entries
-
findByUserIdAndMediaId
Returns the entry for the given user and media, if present. -
existsByUserIdAndMediaId
Returnstrueif an entry already exists for the given user and media. -
deleteByUserIdAndMediaId
@Modifying @Transactional @Query("DELETE FROM UserMediaListModel u WHERE u.user.id = :userId AND u.media.id = :mediaId") long deleteByUserIdAndMediaId(@Param("userId") Integer userId, @Param("mediaId") Integer mediaId) Deletes the entry for the given user and media, returning the number of rows deleted.
-