PaginatedIterable

class PaginatedIterable<T>(pageSize: Int, countGetter: () -> Long, paginationResultGetter: Pagination.() -> PaginationResult<T>) : Iterable<T> (source)

An iterable that lazily fetches items from a paginated data source. It creates a PaginatedIterator that automatically fetches pages as needed.

Parameters

pageSize

The size of each page to fetch

countGetter

A function that returns the total count of available items

paginationResultGetter

A function that fetches a page of results for a given pagination

Type Parameters

T

The type of items being iterated

Constructors

Link copied to clipboard
constructor(pageSize: Int, countGetter: () -> Long, paginationResultGetter: Pagination.() -> PaginationResult<T>)

Functions

Link copied to clipboard
suspend fun <T> Iterable<Deferred<T>>.awaitFirst(cancelOthers: Boolean = true): T

Trying to Deferred.await on all thiss. The first Deferred completed its work will interrupt all others awaits and, if cancelOthers passed as true (by default), will also cancel all the others Deferreds

suspend fun <T> Iterable<Deferred<T>>.awaitFirst(scope: CoroutineScope, cancelOnResult: Boolean = true): T

Trying to Deferred.await on all thiss. The first Deferred completed its work will interrupt all others awaits and, if cancelOnResult passed as true (by default), will also cancel all the others Deferreds

Link copied to clipboard
suspend fun <T> Iterable<Deferred<T>>.awaitFirstWithDeferred(scope: CoroutineScope, cancelOnResult: Boolean = true): Pair<Deferred<T>, T>

Trying to Deferred.await on all thiss. The first Deferred completed its work will interrupt all others awaits and, if cancelOnResult passed as true (by default), will also cancel all the others Deferreds

Link copied to clipboard
fun <T> Iterable<T>.calculateDiff(other: Iterable<T>, strictComparison: Boolean = false): Diff<T>
fun <T> Iterable<T>.calculateDiff(other: Iterable<T>, comparisonFun: (T?, T?) -> Boolean): Diff<T>

Calculating Diff object

Link copied to clipboard
inline fun <T> Iterable<T>.calculateStrictDiff(other: Iterable<T>): Diff<T>

This method call calculateDiff with strict mode enabled

Link copied to clipboard
inline fun <T> Iterable<T>.diff(other: Iterable<T>, strictComparison: Boolean = false): Diff<T>
inline fun <T> Iterable<T>.diff(other: Iterable<T>, noinline comparisonFun: (T?, T?) -> Boolean): Diff<T>
Link copied to clipboard
fun <T> Iterable<T?>.firstNotNull(): T & Any

Returns the first non-null element in this iterable.

Link copied to clipboard
suspend fun <O> Iterable<DeferredAction<*, O>>.invokeFirstOf(scope: CoroutineScope, cancelOnResult: Boolean = true): O

Invokes the first DeferredAction whose deferred value completes, executing its callback and returning the result. Other deferred actions are cancelled if cancelOnResult is true.

Link copied to clipboard
suspend fun <T, O> Iterable<Deferred<T>>.invokeOnFirst(scope: CoroutineScope, cancelOnResult: Boolean = true, callback: suspend (T) -> O): O

Awaits the first Deferred to complete and invokes the callback on its value. Other deferred values are cancelled if cancelOnResult is true.

Link copied to clipboard
open operator override fun iterator(): Iterator<T>
Link copied to clipboard
suspend fun Iterable<Job>.joinFirst(cancelOthers: Boolean = true): Job
suspend fun Iterable<Job>.joinFirst(scope: CoroutineScope, cancelOthers: Boolean = true): Job

Trying to Job.join on all thiss. The first Job completed its work will interrupt all others joins and, if cancelOthers passed as true (by default), will also cancel all the others Jobs

Link copied to clipboard
inline fun <I> Iterable<I>.joinTo(separator: I? = null, prefix: I? = null, postfix: I? = null): List<I>

Joins elements of this iterable into a list with a constant separator between elements. Optional prefix and postfix can be added to the result. Null separators are skipped.

inline fun <I> Iterable<I>.joinTo(separatorFun: (I) -> I?, prefix: I? = null, postfix: I? = null): List<I>

Joins elements of this iterable into a list with separators between elements. Separators are generated using separatorFun. Optional prefix and postfix can be added to the result. Null values from separator function are skipped.

inline fun <I, R> Iterable<I>.joinTo(separator: R? = null, prefix: R? = null, postfix: R? = null, transform: (I) -> R?): List<R>

Joins elements of this iterable into a list with a constant separator between elements. Each element is transformed using transform. Optional prefix and postfix can be added to the result. Null values from transformations or separators are skipped.

inline fun <I, R> Iterable<I>.joinTo(separatorFun: (I) -> R?, prefix: R? = null, postfix: R? = null, transform: (I) -> R?): List<R>

Joins elements of this iterable into a list with separators between elements. Each element is transformed using transform, and separators are generated using separatorFun. Optional prefix and postfix can be added to the result. Null values from transformations or separator function are skipped.

Link copied to clipboard
inline fun <T, R> Iterable<T>.mapNotNullA(transform: (T) -> R?): List<R>
Link copied to clipboard

Optionally reverses this Iterable based on the reverse parameter. Delegates to specialized implementations for List and Set for better performance.

Link copied to clipboard

Paginates this Iterable according to the given Pagination parameters. Returns a PaginationResult containing the items within the specified page range.

Link copied to clipboard
fun <T> Iterable<T>.withReplaced(t: T, block: (T) -> T): List<T>

Returns a new list with the first occurrence of element t replaced by applying block to it. All other elements remain unchanged.

Link copied to clipboard
fun <T> Iterable<T>.withReplacedAt(i: Int, block: (T) -> T): List<T>

Returns a new list with the element at index i replaced by applying block to it. All other elements remain unchanged.