Repos¶
Repositories in this library are unified interfaces to work with different types of standard repos:
- CRUD (create/read/update/delete)
- Key-value
- Key-values
CRUD¶
Default interface for any CRUD-oriented realization of repositories. This type of repos separated to three interfaces:
CRUDRepo extends both ReadCRUDRepo and WriteCRUDRepo.
CRUD repos do not support forced placing of data by id when data is not in repo. That means, that you can’t set data in repo by id which absent in the repository.
ReadCRUDRepo¶
Contains read-only operations, such as getById, contains. This interface can’t be observed because of it does not suppose any mutable operation.
WriteCRUDRepo¶
Contains write-only operations, such as create, update. This interface can be observed via its flows:
- newObjectsFlow for newely created objects
- updatedObjectsFlow for old updated objects
- deletedObjectsIdsFlow for deleted objects
Info
By default, all mutating operations consumes Lists of data (List<New> for create, List<Pair<Id, New>> for update and List<Id> for delete),
but all they have their extension function-variations with one/two args (like create with New arg)
- createoperation consumes list of- Newvariants of object and produces- Registereds list. In most cases,- Registeredvariant of object should have- Idof registered object, but it is not required for repo.
- updateoperation consumes list of pairs with- Idand- Newobjects and produces list of- Registeredobjects.
- deleteByIdoperation consumes list of- Ids and do not consume anything except of notifying via- deletedObjectsIdsFlow.
KeyValue¶
Key-value repos has been created to support work with classic key-value stores, where keys are unique across all the repo when values are not unique. As well as all the others types of repos, this one have two basic types: ReadKeyValueRepo and WriteKeyValueRepo
ReadKeyValueRepo¶
Read repo provides functions like: contains, get or values.
WritekeyValueRepo¶
Contains write-only operations. This interface can be observed via its flows:
- onNewValue to retrieve newely set values and keys
- onValueRemoved for the values removed from repo
Info
By default, all mutating operations consumes some collections. For example, set
require Map with Keys and Values and do not returns anything. Instead, it will throw notification via onNewValue flow
All the methods on WriteKeyValueRepo have their variances with pairs (for set) or plain varargs.
- setoperation consumes map of- Keys and their- Values, set them and produces updates via- onNewValue
- unsetoperation consumes list of- Keys, removing- Valueby- Keyand produces updates via- onValueRemoved
- unsetWithValuesconsumes list of- Values, removing all- Keys with the- Values equal to one of the input- Values, and then produces updates via- onValueRemoved
KeyValues¶
This type of repos contains muliple Values by their unique Key. It is not guaranteed, that Values list by any Key will contains only unique values,
but in most cases Values list will not contains copies/same objects.
ReadKeyValuesRepo¶
Contains operations for work with value/values getting and checking. For example:
count for checking of amount of all values in repo
or values by key; get for getting of values by
pagination.
WriteKeyValuesRepo¶
Contains write-only operations. This interface can be observed via its flows:
- onNewValue will pass KeyandValuewhenValuehas been added to theKey
- onValueRemoved will pass KeyandValuewhenValuehas been removed for theKey
- onDataCleared will pass Keywhen all its values has been removed by theclearoperation
Info
In difference with other repos, not all the methods of write key values repo require collections.
All the methods on WriteKeyValuesRepo have their variances with pairs (for set) or plain varargs.
- addwill add- Values to their- Keys without any removing of data
- clearremoves all- Values by- Keyand- Keyitself from repo
- clearWithValueremoves all- Valuewith full clear of all data by- Keys with incoming- Value
- removeconsumes- Mapof- Keys and the- Values which should be removed for each- Key
- removeWithValuewill remove only- Valuefrom all- Keys collections without their full wipe
- setconsumes- Mapof- Keys and the- Values and will rewrite currently exists list of- Values and set the- Values for their- Key