ReadKeyValueFromKeyValuesRepo

Adapter that exposes a ReadKeyValuesRepo as a ReadKeyValueRepo mapping each key to a List of values. Each key's associated list of values is retrieved via ReadKeyValuesRepo.getAll.

Parameters

original

The underlying ReadKeyValuesRepo to delegate operations to

Type Parameters

Key

The type of keys

Value

The type of individual values in the one-to-many repo

Inheritors

Constructors

Link copied to clipboard
constructor(original: ReadKeyValuesRepo<Key, Value>)

Functions

Link copied to clipboard

Wraps this ReadKeyValueRepo as a ReadCRUDFromKeyValueRepo, exposing CRUD read operations.

Link copied to clipboard

Wraps this ReadKeyValueRepo (mapping keys to iterables) as a ReadKeyValuesFromKeyValueRepo, exposing a one-to-many read interface.

Link copied to clipboard
Link copied to clipboard
open suspend override fun contains(key: Key): Boolean
Link copied to clipboard
open suspend override fun count(): Long
Link copied to clipboard

Computes the difference between all entries in this ReadKeyValueRepo and the given other map.

Link copied to clipboard
Link copied to clipboard
open suspend override fun get(k: Key): List<Value>?
Link copied to clipboard
open suspend override fun getAll(): Map<Key, List<Value>>

Returns all key-value pairs in the repository as a Map. Default implementation iterates all pages using keys and get.

Link copied to clipboard
open suspend override fun keys(pagination: Pagination, reversed: Boolean = false): PaginationResult<Key>

This method should use sorted by Keys search and return the PaginationResult. By default, it should use ascending sort for Keys

open suspend override fun keys(v: List<Value>, pagination: Pagination, reversed: Boolean = false): PaginationResult<Key>

This method should use sorted by Keys search and return the PaginationResult. By default, it should use ascending sort for Keys.

Link copied to clipboard

Creates a pagination starting from the first page with size equal to the total count of items in this ReadKeyValueRepo. This effectively creates a single page containing all items.

Link copied to clipboard
open suspend override fun values(pagination: Pagination, reversed: Boolean = false): PaginationResult<List<Value>>

This method should use sorted by Keys search and return the PaginationResult. By default, it should use ascending sort for Keys

Link copied to clipboard

Wraps this ReadKeyValueRepo with a MapperRepo to expose a mapped ReadKeyValueRepo.

inline fun <FromKey, FromValue, ToKey, ToValue> ReadKeyValueRepo<ToKey, ToValue>.withMapper(noinline keyFromToTo: suspend FromKey.() -> ToKey = { this as ToKey }, noinline valueFromToTo: suspend FromValue.() -> ToValue = { this as ToValue }, noinline keyToToFrom: suspend ToKey.() -> FromKey = { this as FromKey }, noinline valueToToFrom: suspend ToValue.() -> FromValue = { this as FromValue }): ReadKeyValueRepo<FromKey, FromValue>

Wraps this ReadKeyValueRepo with inline conversion lambdas to expose a mapped ReadKeyValueRepo.