Interface ReviewRepository
- All Superinterfaces:
org.springframework.data.repository.CrudRepository<Review,,Long> org.springframework.data.repository.Repository<Review,Long>
@Repository
public interface ReviewRepository
extends org.springframework.data.repository.CrudRepository<Review,Long>
The ReviewRepository is a repository for Review entities
-
Method Summary
Modifier and TypeMethodDescriptionlongcountByStatus(ModerationStatus status) longlongfindBottomRatedItems(ModerationStatus status, LocalDateTime since, long minReviews, org.springframework.data.domain.Pageable pageable) findByItemAndStatus(MenuItem item, ModerationStatus approved) findByReviewer(User user) findByStatus(ModerationStatus moderationStatus) findTopRatedItems(ModerationStatus status, LocalDateTime since, long minReviews, org.springframework.data.domain.Pageable pageable) Methods inherited from interface org.springframework.data.repository.CrudRepository
count, delete, deleteAll, deleteAll, deleteAllById, deleteById, existsById, findAll, findAllById, findById, save, saveAll
-
Method Details
-
findByReviewer
- Parameters:
user-- Returns:
- all reviews that have come from a single reviewer, ex say this user has made a few reviews over the past year well then this method will return only the reviews that this user has sent
-
findByStatus
-
findByItemAndStatus
-
countByStatus
@Query("SELECT COUNT(r) FROM reviews r WHERE r.status = :status") long countByStatus(@Param("status") ModerationStatus status) -
countDistinctItemsByStatus
@Query("SELECT COUNT(DISTINCT r.item.id) FROM reviews r WHERE r.status = :status") long countDistinctItemsByStatus(@Param("status") ModerationStatus status) -
countDistinctCommonsByStatus
@Query("SELECT COUNT(DISTINCT r.item.diningCommonsCode) FROM reviews r WHERE r.status = :status") long countDistinctCommonsByStatus(@Param("status") ModerationStatus status) -
findMaxDateItemServedByStatus
@Query("SELECT MAX(r.dateItemServed) FROM reviews r WHERE r.status = :status") LocalDateTime findMaxDateItemServedByStatus(@Param("status") ModerationStatus status) -
findTopRatedItems
@Query("SELECT r.item.id AS itemId,\n r.item.name AS name,\n r.item.diningCommonsCode AS diningCommonsCode,\n r.item.mealCode AS mealCode,\n AVG(r.itemsStars) AS avgStars,\n COUNT(r) AS reviewCount\nFROM reviews r\nWHERE r.status = :status\n AND r.dateItemServed >= :since\n AND r.itemsStars IS NOT NULL\nGROUP BY r.item.id, r.item.name, r.item.diningCommonsCode, r.item.mealCode\nHAVING COUNT(r) >= :minReviews\nORDER BY AVG(r.itemsStars) DESC, COUNT(r) DESC\n") List<ItemRatingProjection> findTopRatedItems(@Param("status") ModerationStatus status, @Param("since") LocalDateTime since, @Param("minReviews") long minReviews, org.springframework.data.domain.Pageable pageable) -
findBottomRatedItems
@Query("SELECT r.item.id AS itemId,\n r.item.name AS name,\n r.item.diningCommonsCode AS diningCommonsCode,\n r.item.mealCode AS mealCode,\n AVG(r.itemsStars) AS avgStars,\n COUNT(r) AS reviewCount\nFROM reviews r\nWHERE r.status = :status\n AND r.dateItemServed >= :since\n AND r.itemsStars IS NOT NULL\nGROUP BY r.item.id, r.item.name, r.item.diningCommonsCode, r.item.mealCode\nHAVING COUNT(r) >= :minReviews\nORDER BY AVG(r.itemsStars) ASC, COUNT(r) DESC\n") List<ItemRatingProjection> findBottomRatedItems(@Param("status") ModerationStatus status, @Param("since") LocalDateTime since, @Param("minReviews") long minReviews, org.springframework.data.domain.Pageable pageable)
-