MapCRUDRepo

MutableMap-based MapCRUDRepo. All internal operations will be locked with locker

Warning: It is not recommended to use constructor with both MutableMap and SmartRWLocker. Besides, in case you are using your own MutableMap as a map you should be careful with operations on this map

Constructors

Link copied to clipboard
constructor(map: MutableMap<IdType, ObjectType>, locker: SmartRWLocker = SmartRWLocker())

Properties

Link copied to clipboard
abstract val deletedObjectsIdsFlow: Flow<IdType>
Link copied to clipboard
abstract val newObjectsFlow: Flow<ObjectType>
Link copied to clipboard
abstract val updatedObjectsFlow: Flow<ObjectType>

Functions

Link copied to clipboard
Link copied to clipboard
fun <ObjectType, IdType, InputType> WriteCRUDRepo<ObjectType, IdType, InputType>.caching(kvCache: KVCache<IdType, ObjectType>, scope: CoroutineScope, locker: SmartRWLocker = SmartRWLocker(), idGetter: (ObjectType) -> IdType): WriteCRUDCacheRepo<ObjectType, IdType, InputType>
Link copied to clipboard
open suspend override fun contains(id: IdType): Boolean
Link copied to clipboard
open suspend override fun count(): Long
Link copied to clipboard
abstract suspend fun create(values: List<InputValueType>): List<ObjectType>
Link copied to clipboard
abstract suspend fun deleteById(ids: List<IdType>)
Link copied to clipboard
Link copied to clipboard
fun <ObjectType, IdType, InputType> CRUDRepo<ObjectType, IdType, InputType>.fullyCached(kvCache: KeyValueRepo<IdType, ObjectType> = MapKeyValueRepo(), scope: CoroutineScope = CoroutineScope(Dispatchers.Default), skipStartInvalidate: Boolean = false, locker: SmartRWLocker = SmartRWLocker(), idGetter: (ObjectType) -> IdType): FullCRUDCacheRepo<ObjectType, IdType, InputType>
Link copied to clipboard
open suspend override fun getAll(): Map<IdType, ObjectType>
Link copied to clipboard
open suspend override fun getById(id: IdType): ObjectType?
Link copied to clipboard
open suspend override fun getByPagination(pagination: Pagination): PaginationResult<ObjectType>
Link copied to clipboard
open suspend override fun getIdsByPagination(pagination: Pagination): PaginationResult<IdType>
Link copied to clipboard
inline suspend fun ReadCRUDRepo<*, *>.maxPagePagination(): SimplePagination
Link copied to clipboard
abstract suspend fun update(values: List<UpdatedValuePair<IdType, InputValueType>>): List<ObjectType>
abstract suspend fun update(id: IdType, value: InputValueType): ObjectType?
Link copied to clipboard
inline fun <FromKey, FromValue, ToKey, ToValue> ReadCRUDRepo<ToValue, ToKey>.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 }): ReadCRUDRepo<FromValue, FromKey>
inline fun <FromKey, FromValue, FromInput, ToKey, ToValue, ToInput> CRUDRepo<ToValue, ToKey, ToInput>.withMapper(noinline keyFromToTo: suspend FromKey.() -> ToKey = { this as ToKey }, noinline valueFromToTo: suspend FromValue.() -> ToValue = { this as ToValue }, noinline inputFromToTo: suspend FromInput.() -> ToInput = { this as ToInput }, noinline keyToToFrom: suspend ToKey.() -> FromKey = { this as FromKey }, noinline valueToToFrom: suspend ToValue.() -> FromValue = { this as FromValue }, noinline inputToToFrom: suspend ToInput.() -> FromInput = { this as FromInput }): CRUDRepo<FromValue, FromKey, FromInput>
inline fun <FromKey, FromValue, FromInput, ToKey, ToValue, ToInput> WriteCRUDRepo<ToValue, ToKey, ToInput>.withMapper(noinline keyFromToTo: suspend FromKey.() -> ToKey = { this as ToKey }, noinline valueFromToTo: suspend FromValue.() -> ToValue = { this as ToValue }, noinline inputFromToTo: suspend FromInput.() -> ToInput = { this as ToInput }, noinline keyToToFrom: suspend ToKey.() -> FromKey = { this as FromKey }, noinline valueToToFrom: suspend ToValue.() -> FromValue = { this as FromValue }, noinline inputToToFrom: suspend ToInput.() -> FromInput = { this as FromInput }): WriteCRUDRepo<FromValue, FromKey, FromInput>