package it.cavallium.dbengine.database.collections; import reactor.core.publisher.Mono; public interface Joiner { interface ValueGetter { /** * Can return Mono error IOException */ Mono 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 */ Mono join(ValueGetter dbValueGetter, DBVALUE value); static Joiner direct() { return (dbValueGetter, value) -> Mono.just(value); }; }