MessageSearcher.java
- package net.morimekta.providence.storage;
- import net.morimekta.providence.PMessage;
- import net.morimekta.providence.PMessageBuilder;
- import javax.annotation.Nonnull;
- import java.util.List;
- import static net.morimekta.providence.util.MessageUtil.toBuilderAll;
- /**
- * Interface for searching a store for a specific search S.
- *
- * @param <Q> Search query param, be it single string or struct or union with search parameters.
- * @param <M> PMessage that we search for.
- */
- public interface MessageSearcher<Q, M extends PMessage<M>>
- extends Searcher<Q, M> {
- /**
- * Get a list of builders for the query input. No modifications
- * to the returned builders will be reflected onto the store.
- *
- * @param query The key to look up.
- * @param <B> The builder type.
- * @return List of builders that matches query Q.
- */
- @Nonnull
- default <B extends PMessageBuilder<M>>
- List<B> searchBuilders(@Nonnull Q query) {
- return toBuilderAll(search(query));
- }
- }