Skip to content

Commit 26a85de

Browse files
committed
FIX: pagination sorting func #4
1 parent f2cc7ce commit 26a85de

File tree

3 files changed

+9
-12
lines changed

3 files changed

+9
-12
lines changed

src/main/kotlin/eom/improve/kafkaboot/repository/FilmRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ import reactor.core.publisher.Mono
1111
interface FilmRepository : R2dbcRepository<FilmEntity, Int> {
1212
fun findAllBy() : Flux<FilmEntity>
1313
fun deleteByFilmId(filmId: Int) : Mono<Void>
14-
fun findAllBy(pageable: Pageable) : Flux<FilmEntity>
14+
fun findAllByOrderByFilmId(pageable: Pageable) : Flux<FilmEntity>
1515
}

src/main/kotlin/eom/improve/kafkaboot/service/FilmControllerImpl.kt

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,7 @@ class FilmControllerImpl(
1919
}
2020

2121
override fun getFilms(page: Long, limit: Long): Mono<PaginatedResponse<Film>> {
22-
return filmService.findAllByPageable(PageRequest.of(page.toInt(), limit.toInt()))
23-
.map { it.convert2Pojo() }
24-
.collectList()
25-
.flatMap { films ->
26-
PaginatedResponse(
27-
response = films,
28-
currentPage = page,
29-
totalPages = (films.size / limit).toLong()
30-
).toMono()
31-
}
22+
return filmService.findAllByPageable(PageRequest.of(page.toInt() , limit.toInt()))
3223
}
3324

3425
override fun modifyFilm(updatedFilm : Film) : Mono<Film> {

src/main/kotlin/eom/improve/kafkaboot/service/FilmService.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package eom.improve.kafkaboot.service
22

3+
import eom.improve.kafkaboot.common.PaginatedResponse
4+
import eom.improve.kafkaboot.dto.Film
35
import eom.improve.kafkaboot.model.FilmEntity
46
import eom.improve.kafkaboot.model.InventoryEntity
57
import eom.improve.kafkaboot.model.RentalEntity
@@ -21,7 +23,11 @@ class FilmService(
2123
private val filmCategoryRepository: FilmCategoryRepository
2224
) {
2325

24-
fun findAllByPageable(pageable: Pageable) : Flux<FilmEntity> = filmRepository.findAllBy(pageable)
26+
fun findAllByPageable(pageable: Pageable) : Mono<PaginatedResponse<Film>> = filmRepository.findAllByOrderByFilmId(pageable)
27+
.collectSortedList { o1, o2 -> o1.filmId - o2.filmId }
28+
.zipWith(filmRepository.count().toMono())
29+
.map { pagination -> PaginatedResponse<Film>( pagination.t1.map { it.convert2Pojo() } , pageable.pageNumber.toLong() ,pagination.t2 / pageable.pageSize ) }
30+
2531

2632
fun findAll() : Flux<FilmEntity> = filmRepository.findAllBy()
2733

0 commit comments

Comments
 (0)