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 Details

    • findByReviewer

      Iterable<Review> findByReviewer(User user)
      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

      Iterable<Review> findByStatus(ModerationStatus moderationStatus)
    • findByItemAndStatus

      Iterable<Review> findByItemAndStatus(MenuItem item, ModerationStatus approved)
    • 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)