From 79fcff03db1f3c4c496203001f41c4c17ddaeb68 Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Tue, 30 Jan 2024 22:26:27 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=AD=A3=E3=81=97=E3=81=9F?= =?UTF-8?q?=E5=AE=9F=E8=A3=85=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exposed/ExposedPaginationExtension.kt | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/dev/usbharu/hideout/application/infrastructure/exposed/ExposedPaginationExtension.kt b/src/main/kotlin/dev/usbharu/hideout/application/infrastructure/exposed/ExposedPaginationExtension.kt index f00d9dcb..611d19bd 100644 --- a/src/main/kotlin/dev/usbharu/hideout/application/infrastructure/exposed/ExposedPaginationExtension.kt +++ b/src/main/kotlin/dev/usbharu/hideout/application/infrastructure/exposed/ExposedPaginationExtension.kt @@ -1,9 +1,6 @@ package dev.usbharu.hideout.application.infrastructure.exposed -import org.jetbrains.exposed.sql.ExpressionWithColumnType -import org.jetbrains.exposed.sql.Query -import org.jetbrains.exposed.sql.SortOrder -import org.jetbrains.exposed.sql.andWhere +import org.jetbrains.exposed.sql.* fun Query.pagination(page: Page, exp: ExpressionWithColumnType): Query { if (page.minId != null) { @@ -17,3 +14,19 @@ fun Query.pagination(page: Page, exp: ExpressionWithColumnType): Query { page.limit?.let { limit(it) } return this } + +fun Query.withPagination(page: Page, exp: ExpressionWithColumnType): PaginationList { + page.limit?.let { limit(it) } + val resultRows = if (page.minId != null) { + page.maxId?.let { andWhere { exp.less(it) } } + page.minId?.let { andWhere { exp.greater(it) } } + reversed() + } else { + page.maxId?.let { andWhere { exp.less(it) } } + page.sinceId?.let { andWhere { exp.greater(it) } } + orderBy(exp, SortOrder.DESC) + toList() + } + + return PaginationList(resultRows, resultRows.firstOrNull()?.getOrNull(exp), resultRows.lastOrNull()?.getOrNull(exp)) +} \ No newline at end of file