콘텐츠 메인

- 홈 탭 API
This commit is contained in:
2025-02-06 19:06:27 +09:00
parent 05e714fff1
commit 04eb416a73
13 changed files with 763 additions and 6 deletions

View File

@@ -1,5 +1,7 @@
package kr.co.vividnext.sodalive.notice
import com.querydsl.core.annotations.QueryProjection
data class GetNoticeResponse(
val totalCount: Int,
val noticeList: List<NoticeItem>
@@ -11,3 +13,8 @@ data class NoticeItem(
val content: String,
val date: String
)
data class NoticeTitleItem @QueryProjection constructor(
val id: Long,
val title: String
)

View File

@@ -63,4 +63,8 @@ class ServiceNoticeService(private val repository: ServiceServiceNoticeRepositor
return GetNoticeResponse(totalCount, noticeList)
}
fun getLatestNotice(): NoticeTitleItem? {
return repository.getLatestNotice()
}
}

View File

@@ -12,6 +12,7 @@ interface ServiceServiceNoticeRepository : JpaRepository<ServiceNotice, Long>, S
interface ServiceNoticeQueryRepository {
fun getNoticeTotalCount(): Int
fun getNoticeList(pageable: Pageable): List<ServiceNotice>
fun getLatestNotice(): NoticeTitleItem?
}
@Repository
@@ -34,4 +35,18 @@ class ServiceNoticeQueryRepositoryImpl(private val queryFactory: JPAQueryFactory
.orderBy(serviceNotice.id.desc())
.fetch()
}
override fun getLatestNotice(): NoticeTitleItem? {
return queryFactory
.select(
QNoticeTitleItem(
serviceNotice.id,
serviceNotice.title
)
)
.from(serviceNotice)
.where(serviceNotice.isActive.isTrue)
.orderBy(serviceNotice.id.desc())
.fetchFirst()
}
}