Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ internal class NoticeEntityRepository(
page: Int,
size: Int,
): List<Notice> {
val pageable = pageRequest(page, size)
val pageable = createPageRequestByDateAndIdDesc(page, size)
val noticePage = noticeJpaRepository.findBySearchWordAndDepartment(searchWord, department, pageable)
return noticePage.map { it.toNotice() }.toList()
}
Expand All @@ -33,13 +33,13 @@ internal class NoticeEntityRepository(
page: Int,
size: Int,
): List<Notice> {
val pageable = pageRequest(page, size)
val pageable = createPageRequestByNumberDesc(page, size)
val departmentNoticePage = noticeJpaRepository.findByType(department, pageable)
return departmentNoticePage.map { it.toNotice() }.toList()
}

override fun findUniversityNotices(page: Int, size: Int): List<Notice> {
val pageable = pageRequest(page, size)
val pageable = createPageRequestByNumberDesc(page, size)
val universityNoticePage = noticeJpaRepository.findByType("대학", pageable)
return universityNoticePage.map { it.toNotice() }.toList()
}
Expand All @@ -48,7 +48,15 @@ internal class NoticeEntityRepository(
return noticeJpaRepository.findMaxNumberByType(type)
}

private fun pageRequest(page: Int, size: Int): PageRequest {
private fun createPageRequestByNumberDesc(page: Int, size: Int): PageRequest {
return PageRequest.of(
page - 1, size, Sort.by(
Sort.Order.desc("number")
)
)
}

private fun createPageRequestByDateAndIdDesc(page: Int, size: Int): PageRequest {
return PageRequest.of(
page - 1, size, Sort.by(
Sort.Order.desc("date"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ import org.springframework.data.jpa.repository.Query
import org.springframework.data.repository.query.Param

internal interface NoticeJpaRepository : JpaRepository<NoticeEntity, Long> {
/** 원하는 타입의 가장 최신 공지사항 번호를 확인하는 메서드
/**
* 원하는 타입의 가장 최신 공지사항 번호를 확인하는 메서드
*
* @Param type (학과 이름 또는 대학)
* @Return type에 알맞는 최신 공지사항 번호, 만약 공지사항이 존재하지 않다면 Null을 반환한다.
Expand All @@ -33,7 +34,12 @@ internal interface NoticeJpaRepository : JpaRepository<NoticeEntity, Long> {
* @return 키워드에 맞는 공지사항 페이지
*/
@Query(
value = "SELECT * FROM notice WHERE REPLACE(title, ' ', '') LIKE CONCAT('%', REPLACE(?1, ' ', ''), '%') AND type IN (?2, '대학')",
value = """
SELECT *
FROM notice
WHERE MATCH(title) AGAINST (?1 IN NATURAL LANGUAGE MODE)
ORDER BY date DESC, id DESC
""",
nativeQuery = true
)
fun findBySearchWordAndDepartment(searchWord: String, department: String, pageable: Pageable): Page<NoticeEntity>
Expand Down
Loading