mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-11-17 13:53:49 +00:00
add several additional constructors for the pagination result
This commit is contained in:
parent
eea645c865
commit
703094c924
@ -1,24 +1,50 @@
|
|||||||
package dev.inmo.micro_utils.pagination
|
package dev.inmo.micro_utils.pagination
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
import kotlin.math.ceil
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class PaginationResult<T>(
|
data class PaginationResult<T>(
|
||||||
override val page: Int,
|
override val page: Int,
|
||||||
val pagesNumber: Int,
|
|
||||||
val results: List<T>,
|
|
||||||
override val size: Int,
|
override val size: Int,
|
||||||
val objectsCount: Long = pagesNumber * size.toLong()
|
val results: List<T>,
|
||||||
) : Pagination
|
val objectsCount: Long
|
||||||
|
) : Pagination {
|
||||||
|
val pagesNumber: Int = ceil(objectsCount / size.toFloat()).toInt()
|
||||||
|
|
||||||
fun <T> emptyPaginationResult() = PaginationResult<T>(0, 0, emptyList(), 0)
|
constructor(
|
||||||
|
page: Int,
|
||||||
|
results: List<T>,
|
||||||
|
pagesNumber: Int,
|
||||||
|
size: Int
|
||||||
|
) : this(
|
||||||
|
page,
|
||||||
|
size,
|
||||||
|
results,
|
||||||
|
(pagesNumber * size).toLong()
|
||||||
|
)
|
||||||
|
@Deprecated("Replace with The other order of incoming parameters or objectsCount parameter")
|
||||||
|
constructor(
|
||||||
|
page: Int,
|
||||||
|
pagesNumber: Int,
|
||||||
|
results: List<T>,
|
||||||
|
size: Int
|
||||||
|
) : this(
|
||||||
|
page,
|
||||||
|
results,
|
||||||
|
pagesNumber,
|
||||||
|
size
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <T> emptyPaginationResult() = PaginationResult<T>(0, 0, emptyList(), 0L)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return New [PaginationResult] with [data] without checking of data sizes equality
|
* @return New [PaginationResult] with [data] without checking of data sizes equality
|
||||||
*/
|
*/
|
||||||
fun <I, O> PaginationResult<I>.changeResultsUnchecked(
|
fun <I, O> PaginationResult<I>.changeResultsUnchecked(
|
||||||
data: List<O>
|
data: List<O>
|
||||||
): PaginationResult<O> = PaginationResult(page, pagesNumber, data, size)
|
): PaginationResult<O> = PaginationResult(page, size, data, objectsCount)
|
||||||
/**
|
/**
|
||||||
* @return New [PaginationResult] with [data] <b>with</b> checking of data sizes equality
|
* @return New [PaginationResult] with [data] <b>with</b> checking of data sizes equality
|
||||||
*/
|
*/
|
||||||
@ -34,12 +60,8 @@ fun <T> List<T>.createPaginationResult(
|
|||||||
commonObjectsNumber: Long
|
commonObjectsNumber: Long
|
||||||
) = PaginationResult(
|
) = PaginationResult(
|
||||||
pagination.page,
|
pagination.page,
|
||||||
calculatePagesNumber(
|
|
||||||
commonObjectsNumber,
|
|
||||||
pagination.size
|
|
||||||
),
|
|
||||||
this,
|
|
||||||
pagination.size,
|
pagination.size,
|
||||||
|
this,
|
||||||
commonObjectsNumber
|
commonObjectsNumber
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -48,12 +70,8 @@ fun <T> List<T>.createPaginationResult(
|
|||||||
commonObjectsNumber: Long
|
commonObjectsNumber: Long
|
||||||
) = PaginationResult(
|
) = PaginationResult(
|
||||||
calculatePage(firstIndex, size),
|
calculatePage(firstIndex, size),
|
||||||
calculatePagesNumber(
|
|
||||||
commonObjectsNumber,
|
|
||||||
size
|
|
||||||
),
|
|
||||||
this,
|
|
||||||
size,
|
size,
|
||||||
|
this,
|
||||||
commonObjectsNumber
|
commonObjectsNumber
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user