2021-01-30 20:16:14 +01:00
|
|
|
package it.cavallium.dbengine.database.collections;
|
|
|
|
|
|
|
|
import reactor.core.publisher.Mono;
|
|
|
|
|
2021-04-03 19:09:06 +02:00
|
|
|
public interface Joiner<KEY, DB_VALUE, JOINED_VALUE> {
|
2021-01-30 20:16:14 +01:00
|
|
|
|
|
|
|
interface ValueGetter<KEY, VALUE> {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Can return Mono error IOException
|
|
|
|
*/
|
|
|
|
Mono<VALUE> get(KEY key);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Warning! You must only join with immutable data to ensure data correctness.
|
|
|
|
* Good examples: message id, send date, ...
|
|
|
|
* Bad examples: message content, views, edited, ...
|
|
|
|
*
|
|
|
|
* Can return Mono error IOException
|
|
|
|
*/
|
2021-04-03 19:09:06 +02:00
|
|
|
Mono<JOINED_VALUE> join(ValueGetter<KEY, DB_VALUE> dbValueGetter, DB_VALUE value);
|
2021-01-30 20:16:14 +01:00
|
|
|
|
|
|
|
}
|