Link Search Menu Expand Document

Querying

To bring this all together, to query your ReadModel all you need to do is create a query object and then call the query method on the ReadModel.

public class DewdropGetAccountByIdQuery {
    private UUID accountId;
}

The query objects are nothing special and can be whatever type of objects you wish. They do not extend any special classes. They are just plain old POJO’s.

To query a ReadModel, you just pass your query object to the executeQuery(query) method on dewdrop.

DewdropGetAccountByIdQuery query = new DewdropGetAccountByIdQuery(accountId);
dewdrop.executeQuery(query);

The framework will automatically find the ReadModel associated with the Query, construct it (if needed) and then call the @QueryHandler method on it. Then, the @QueryHandler method will be called on the ReadModel and it will return the result of the query.

    @QueryHandler
    public Result<DewdropAccountDetails> handle(DewdropGetAccountByIdQuery query) {
        DewdropAccountDetails dewdropAccountDetails = cache.get(query.getAccountId());
        if (dewdropAccountDetails != null) { return Result.of(dewdropAccountDetails); }
        return Result.empty();
    }

In this query, since there is a @DewdropCache, you just need to look into the cache to find the object and return it!

If you don’t have cache, then you can query against a local datastore or however, you want to architect it.

That’s it!

If you have any questions or issues feel free to reach out to Better Than Brian