Skip to content

Commit 70d5317

Browse files
authored
Merge pull request #74 from TeamDMU/feat/update-search-query-and-paging
[FEAT] ๊ณต์ง€์‚ฌํ•ญ ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ๋ฅผ Full Text Search ์ฟผ๋ฆฌ๋กœ ์ˆ˜์ • ๋ฐ ํŽ˜์ด์ง€ ๋„ค์ด์…˜ ์ •๋ ฌ ๊ธฐ์ค€ ์ถ”๊ฐ€
2 parents f035cb2 + 49a6629 commit 70d5317

2 files changed

Lines changed: 20 additions & 6 deletions

File tree

โ€Ždmforu-infrastructure/storage/mysql/src/main/kotlin/com/dmforu/storage/db/mysql/notice/NoticeEntityRepository.ktโ€Ž

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ internal class NoticeEntityRepository(
2323
page: Int,
2424
size: Int,
2525
): List<Notice> {
26-
val pageable = pageRequest(page, size)
26+
val pageable = createPageRequestByDateAndIdDesc(page, size)
2727
val noticePage = noticeJpaRepository.findBySearchWordAndDepartment(searchWord, department, pageable)
2828
return noticePage.map { it.toNotice() }.toList()
2929
}
@@ -33,13 +33,13 @@ internal class NoticeEntityRepository(
3333
page: Int,
3434
size: Int,
3535
): List<Notice> {
36-
val pageable = pageRequest(page, size)
36+
val pageable = createPageRequestByNumberDesc(page, size)
3737
val departmentNoticePage = noticeJpaRepository.findByType(department, pageable)
3838
return departmentNoticePage.map { it.toNotice() }.toList()
3939
}
4040

4141
override fun findUniversityNotices(page: Int, size: Int): List<Notice> {
42-
val pageable = pageRequest(page, size)
42+
val pageable = createPageRequestByNumberDesc(page, size)
4343
val universityNoticePage = noticeJpaRepository.findByType("๋Œ€ํ•™", pageable)
4444
return universityNoticePage.map { it.toNotice() }.toList()
4545
}
@@ -48,7 +48,15 @@ internal class NoticeEntityRepository(
4848
return noticeJpaRepository.findMaxNumberByType(type)
4949
}
5050

51-
private fun pageRequest(page: Int, size: Int): PageRequest {
51+
private fun createPageRequestByNumberDesc(page: Int, size: Int): PageRequest {
52+
return PageRequest.of(
53+
page - 1, size, Sort.by(
54+
Sort.Order.desc("number")
55+
)
56+
)
57+
}
58+
59+
private fun createPageRequestByDateAndIdDesc(page: Int, size: Int): PageRequest {
5260
return PageRequest.of(
5361
page - 1, size, Sort.by(
5462
Sort.Order.desc("date"),

โ€Ždmforu-infrastructure/storage/mysql/src/main/kotlin/com/dmforu/storage/db/mysql/notice/NoticeJpaRepository.ktโ€Ž

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import org.springframework.data.jpa.repository.Query
77
import org.springframework.data.repository.query.Param
88

99
internal interface NoticeJpaRepository : JpaRepository<NoticeEntity, Long> {
10-
/** ์›ํ•˜๋Š” ํƒ€์ž…์˜ ๊ฐ€์žฅ ์ตœ์‹  ๊ณต์ง€์‚ฌํ•ญ ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ
10+
/**
11+
* ์›ํ•˜๋Š” ํƒ€์ž…์˜ ๊ฐ€์žฅ ์ตœ์‹  ๊ณต์ง€์‚ฌํ•ญ ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ
1112
*
1213
* @Param type (ํ•™๊ณผ ์ด๋ฆ„ ๋˜๋Š” ๋Œ€ํ•™)
1314
* @Return type์— ์•Œ๋งž๋Š” ์ตœ์‹  ๊ณต์ง€์‚ฌํ•ญ ๋ฒˆํ˜ธ, ๋งŒ์•ฝ ๊ณต์ง€์‚ฌํ•ญ์ด ์กด์žฌํ•˜์ง€ ์•Š๋‹ค๋ฉด Null์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
@@ -33,7 +34,12 @@ internal interface NoticeJpaRepository : JpaRepository<NoticeEntity, Long> {
3334
* @return ํ‚ค์›Œ๋“œ์— ๋งž๋Š” ๊ณต์ง€์‚ฌํ•ญ ํŽ˜์ด์ง€
3435
*/
3536
@Query(
36-
value = "SELECT * FROM notice WHERE REPLACE(title, ' ', '') LIKE CONCAT('%', REPLACE(?1, ' ', ''), '%') AND type IN (?2, '๋Œ€ํ•™')",
37+
value = """
38+
SELECT *
39+
FROM notice
40+
WHERE MATCH(title) AGAINST (?1 IN NATURAL LANGUAGE MODE)
41+
ORDER BY date DESC, id DESC
42+
""",
3743
nativeQuery = true
3844
)
3945
fun findBySearchWordAndDepartment(searchWord: String, department: String, pageable: Pageable): Page<NoticeEntity>

0 commit comments

Comments
ย (0)