Class InMemorySearchStore

java.lang.Object
io.fluxcapacitor.javaclient.persisting.search.client.InMemorySearchStore
All Implemented Interfaces:
SearchClient, AutoCloseable

public class InMemorySearchStore extends Object implements SearchClient
In-memory implementation of the SearchClient, intended for local testing and development.

Stores all indexed documents in memory, with support for basic search, statistics, and deletion logic. Ideal for use in test scenarios where a real Flux platform connection is not available or needed.

  • Field Details

  • Constructor Details

    • InMemorySearchStore

      public InMemorySearchStore()
  • Method Details

    • asIdentifier

      protected static String asIdentifier(String collection, String documentId)
    • index

      public CompletableFuture<Void> index(List<SerializedDocument> documents, Guarantee guarantee, boolean ifNotExists)
      Description copied from interface: SearchClient
      Indexes a list of serialized documents into the search engine.
      Specified by:
      index in interface SearchClient
      Parameters:
      documents - the documents to index
      guarantee - delivery guarantee (see Guarantee)
      ifNotExists - if true, only index documents that do not already exist
      Returns:
      a future that completes when the operation is done
    • search

      public Stream<SearchHit<SerializedDocument>> search(SearchDocuments searchDocuments, int fetchSize)
      Description copied from interface: SearchClient
      Executes a streaming search query using the given criteria and fetch size.
      Specified by:
      search in interface SearchClient
      Parameters:
      searchDocuments - the search parameters and query
      fetchSize - the number of results to fetch per page
      Returns:
      a stream of search hits matching the query
    • documentExists

      public boolean documentExists(HasDocument r)
      Description copied from interface: SearchClient
      Checks whether a document with the given criteria exists.
      Specified by:
      documentExists in interface SearchClient
      Parameters:
      r - an object describing the document (e.g., id and collection)
      Returns:
      true if the document exists, false otherwise
    • fetch

      Description copied from interface: SearchClient
      Fetches a single serialized document matching the given request.
      Specified by:
      fetch in interface SearchClient
      Parameters:
      r - an object describing the document to retrieve
      Returns:
      an optional containing the document, if found
    • delete

      public CompletableFuture<Void> delete(SearchQuery query, Guarantee guarantee)
      Description copied from interface: SearchClient
      Deletes documents matching a given query.
      Specified by:
      delete in interface SearchClient
      Parameters:
      query - the search query specifying which documents to delete
      guarantee - delivery guarantee
      Returns:
      a future that completes when the deletion has been performed
    • delete

      public CompletableFuture<Void> delete(String documentId, String collection, Guarantee guarantee)
      Description copied from interface: SearchClient
      Deletes a document by its unique id and collection name.
      Specified by:
      delete in interface SearchClient
      Parameters:
      documentId - the document id
      collection - the collection to delete from
      guarantee - delivery guarantee
      Returns:
      a future that completes when the deletion has been performed
    • createAuditTrail

      public CompletableFuture<Void> createAuditTrail(CreateAuditTrail request)
      Description copied from interface: SearchClient
      Configures Flux to use a search collection as a searchable audit trail.
      Specified by:
      createAuditTrail in interface SearchClient
      Parameters:
      request - a request object specifying the collection to use as an audit trail and retention configuration
      Returns:
      a future that completes when the audit trail has been created.
    • deleteCollection

      public CompletableFuture<Void> deleteCollection(String collection, Guarantee guarantee)
      Description copied from interface: SearchClient
      Deletes an entire document collection and all its contents.
      Specified by:
      deleteCollection in interface SearchClient
      Parameters:
      collection - the name of the collection to delete
      guarantee - delivery guarantee
      Returns:
      a future that completes when the collection has been deleted
    • fetchStatistics

      public List<DocumentStats> fetchStatistics(SearchQuery query, List<String> fields, List<String> groupBy)
      Description copied from interface: SearchClient
      Retrieves search statistics (counts, averages, etc.) over matching documents.
      Specified by:
      fetchStatistics in interface SearchClient
      Parameters:
      query - the query to filter documents
      fields - the fields to compute statistics for
      groupBy - field names used to group statistics
      Returns:
      a list of DocumentStats
    • fetchHistogram

      public SearchHistogram fetchHistogram(GetSearchHistogram request)
      Description copied from interface: SearchClient
      Fetches a histogram (bucketed time-series view) for documents matching the query.
      Specified by:
      fetchHistogram in interface SearchClient
      Parameters:
      request - the histogram query parameters
      Returns:
      a SearchHistogram representing the result
    • fetchFacetStats

      public List<FacetStats> fetchFacetStats(SearchQuery query)
      Description copied from interface: SearchClient
      Retrieves facet statistics (i.e., value counts) for a given query.
      Specified by:
      fetchFacetStats in interface SearchClient
      Parameters:
      query - the query to match documents against
      Returns:
      a list of facet statistics
    • bulkUpdate

      public CompletableFuture<Void> bulkUpdate(Collection<DocumentUpdate> updates, Guarantee guarantee)
      Description copied from interface: SearchClient
      Performs a batch update on a set of documents.
      Specified by:
      bulkUpdate in interface SearchClient
      Parameters:
      updates - the update operations to perform
      guarantee - delivery guarantee
      Returns:
      a future that completes when the updates have been applied
    • openStream

      public Stream<SerializedMessage> openStream(String collection, Long lastIndex, int maxSize)
    • storeMessages

      protected void storeMessages(Map<String,SerializedDocument> updates)
    • asSerializedMessage

      protected SerializedMessage asSerializedMessage(SerializedDocument document)
    • purgeExpiredMessages

      protected void purgeExpiredMessages(Duration messageExpiration)
    • notifyMonitors

      protected void notifyMonitors(String collection, List<SerializedMessage> messages)
    • registerMonitor

      public Registration registerMonitor(BiConsumer<String,List<SerializedMessage>> monitor)
    • registerMonitor

      public Registration registerMonitor(String collection, Consumer<List<SerializedMessage>> monitor)
    • close

      public void close()
      Description copied from interface: SearchClient
      Closes any underlying resources.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface SearchClient