본문 바로가기

카테고리 없음

24.03.19 5분기록보드의 중요성과 평균평점

오늘은 먼저 이력서에 넣으면 좋은것에 대한 특강을 들었는데, 그건 바로 5분 기록보드를 이용하는 것이였다.

5분기록 보드엔 개발을 하면서 있었던 일들을 생생히 써넣을수 있기 때문에, 내가 무엇을 했는지 증명하기에 딱 좋기 때문이다.

오류를 수정한 내용을 쓰는것도 좋고 필요하면 사진을 찍어두는것도 좋다고 한다. 글보단 사진이 보기 좋으니까.

 

그리고 회고노트도 이력서에 넣기 좋다고 했다. 그다음은 코드리뷰에 대한 안내를 듣고 다시 회의를 한뒤 역할분배를 마쳤다.

 

내가 하기로 한건 우선 평점 평균구하기 / 평균 평점순 검색 ,제한걸기 , 익셉션 컨트롤이다.

먼저 평점 평균구하기 / 평균 평점순 검색 ,제한걸기를 이번주 내에 끝내기로 하고 작업에 들어갔다.

 

 

   @Transactional
    override fun getAllProducts(): List<ProductResponse> {
        val products = productRepository.findAll().filter { it.deletedAt == null }
        return products.map { ProductResponse(it) }
    }

    @Transactional
    override fun getProductById(productId: Long): ProductResponse {
        val product =
            productRepository.findByIdAndDeletedAtIsNull(productId)
                .orElseThrow { ModelNotFoundException("Product", productId) }
        return ProductResponse(product)
    }
    이것들을 
    
    @Transactional
    override fun getAllProducts(): List<ProductResponse> {
        val products = productRepository.findAll().filter { it.deletedAt == null }
        return products.map { product ->

            val reviews = reviewRepository.findAllByProductIdAndDeletedAtIsNull(product.id!!, Pageable.unpaged()).content
            val averageRating = reviews.map { it.rating }.average()

            product.ratingAverage = averageRating
            productRepository.save(product)

            ProductResponse(product)
        }
    }

    @Transactional
    override fun getProductById(productId: Long): ProductResponse {
        val product =
            productRepository.findByIdAndDeletedAtIsNull(productId)
                .orElseThrow { ModelNotFoundException("Product", productId) }

        val reviews = reviewRepository.findAllByProductIdAndDeletedAtIsNull(productId, Pageable.unpaged()).content
        val averageRating = reviews.map { it.rating }.average()

        product.ratingAverage = averageRating
        productRepository.save(product)

        return ProductResponse(product)
    }
    이렇게 해서 평균 별점을 구하도록 만들었다