diff --git a/src/main/kotlin/ltd/hlaeja/controller/AccountController.kt b/src/main/kotlin/ltd/hlaeja/controller/AccountController.kt index b2f8c0a..b2409cd 100644 --- a/src/main/kotlin/ltd/hlaeja/controller/AccountController.kt +++ b/src/main/kotlin/ltd/hlaeja/controller/AccountController.kt @@ -5,12 +5,16 @@ import jakarta.validation.constraints.Min import java.util.UUID import ltd.hlaeja.controller.validation.CreateGroup import ltd.hlaeja.controller.validation.EditGroup -import ltd.hlaeja.util.Pagination import ltd.hlaeja.exception.NoChangeException import ltd.hlaeja.exception.NotFoundException import ltd.hlaeja.exception.UsernameDuplicateException import ltd.hlaeja.form.AccountForm import ltd.hlaeja.service.AccountRegistryService +import ltd.hlaeja.util.Pagination +import ltd.hlaeja.util.Pagination.Companion.DEFAULT_PAGE +import ltd.hlaeja.util.Pagination.Companion.DEFAULT_SIZE +import ltd.hlaeja.util.Pagination.Companion.MAX +import ltd.hlaeja.util.Pagination.Companion.MIN import ltd.hlaeja.util.toAccountForm import ltd.hlaeja.util.toAccountRequest import ltd.hlaeja.util.validationErrors @@ -30,12 +34,6 @@ import reactor.core.publisher.Mono class AccountController( private val accountRegistryService: AccountRegistryService, ) { - companion object { - const val DEFAULT_PAGE: Int = 1 - const val DEFAULT_SIZE: Int = 25 - const val MIN: Long = 1 - const val MAX: Long = 100 - } @GetMapping("/edit-{account}") fun getEditAccount( diff --git a/src/main/kotlin/ltd/hlaeja/controller/DeviceController.kt b/src/main/kotlin/ltd/hlaeja/controller/DeviceController.kt index 8af6bed..2af1fe8 100644 --- a/src/main/kotlin/ltd/hlaeja/controller/DeviceController.kt +++ b/src/main/kotlin/ltd/hlaeja/controller/DeviceController.kt @@ -2,8 +2,12 @@ package ltd.hlaeja.controller import jakarta.validation.constraints.Max import jakarta.validation.constraints.Min -import ltd.hlaeja.util.Pagination import ltd.hlaeja.service.DeviceRegistryService +import ltd.hlaeja.util.Pagination +import ltd.hlaeja.util.Pagination.Companion.DEFAULT_PAGE +import ltd.hlaeja.util.Pagination.Companion.DEFAULT_SIZE +import ltd.hlaeja.util.Pagination.Companion.MAX +import ltd.hlaeja.util.Pagination.Companion.MIN import org.springframework.stereotype.Controller import org.springframework.ui.Model import org.springframework.web.bind.annotation.GetMapping @@ -14,12 +18,6 @@ import reactor.core.publisher.Mono class DeviceController( private val deviceRegistryService: DeviceRegistryService, ) { - companion object { - const val DEFAULT_PAGE: Int = 1 - const val DEFAULT_SIZE: Int = 25 - const val MIN: Long = 1 - const val MAX: Long = 100 - } @GetMapping( "/device", diff --git a/src/main/kotlin/ltd/hlaeja/controller/TypeController.kt b/src/main/kotlin/ltd/hlaeja/controller/TypeController.kt index 4a96bf1..69a6a03 100644 --- a/src/main/kotlin/ltd/hlaeja/controller/TypeController.kt +++ b/src/main/kotlin/ltd/hlaeja/controller/TypeController.kt @@ -3,12 +3,16 @@ package ltd.hlaeja.controller import jakarta.validation.constraints.Max import jakarta.validation.constraints.Min import java.util.UUID -import ltd.hlaeja.util.Pagination import ltd.hlaeja.exception.NoChangeException import ltd.hlaeja.exception.NotFoundException import ltd.hlaeja.exception.TypeNameDuplicateException import ltd.hlaeja.form.TypeForm import ltd.hlaeja.service.DeviceRegistryService +import ltd.hlaeja.util.Pagination +import ltd.hlaeja.util.Pagination.Companion.DEFAULT_PAGE +import ltd.hlaeja.util.Pagination.Companion.DEFAULT_SIZE +import ltd.hlaeja.util.Pagination.Companion.MAX +import ltd.hlaeja.util.Pagination.Companion.MIN import ltd.hlaeja.util.toTypeForm import ltd.hlaeja.util.toTypeRequest import ltd.hlaeja.util.validationErrors @@ -26,12 +30,6 @@ import reactor.core.publisher.Mono class TypeController( private val deviceRegistryService: DeviceRegistryService, ) { - companion object { - const val DEFAULT_PAGE: Int = 1 - const val DEFAULT_SIZE: Int = 25 - const val MIN: Long = 1 - const val MAX: Long = 100 - } @GetMapping( "/type", diff --git a/src/main/kotlin/ltd/hlaeja/util/Pagination.kt b/src/main/kotlin/ltd/hlaeja/util/Pagination.kt index a6d3bb0..ff2cf1f 100644 --- a/src/main/kotlin/ltd/hlaeja/util/Pagination.kt +++ b/src/main/kotlin/ltd/hlaeja/util/Pagination.kt @@ -7,12 +7,21 @@ data class Pagination( val items: Int, val defaultSize: Int, ) { + + companion object { + const val DEFAULT_PAGE: Int = 1 + const val DEFAULT_SIZE: Int = 25 + const val MIN: Long = 1 + const val MAX: Long = 100 + const val STEEP: Int = 1 + } + val hasMore: Boolean = show == items val showSize: Boolean = show != defaultSize - val first: Boolean = page <= 1 - val previous: Int = page - 1 - val next: Int = page + 1 - val start: Int = previous * show + 1 + val first: Boolean = page <= STEEP + val previous: Int = page - STEEP + val next: Int = page + STEEP + val start: Int = previous * show + STEEP val end: Int = page * show val size: Int = previous * show + items }