public async IAsyncEnumerable <IResult> HandleAsync(TRequest request, IApplicationState state) { var result = await state.QueryAsync(request); if (result is null) { yield return(Results.NotFound(request.Id)); } else { yield return(Results.Value(result)); } }
public async IAsyncEnumerable <IResult> HandleAsync(AddToBasket request, IApplicationState state) { var id = state.Query(NextGuid.Instance); var now = state.Query(CurrentTime.Instance); yield return(this.LogDebug("Starting request {RequestId} at time {Timestamp}", id, now)); var basket = await state.QueryAsync(new BasketById(request.Id)); if (basket is null) { yield return(NotFound(request.Id)); yield break; } yield return(UpdateOne(db => db.Baskets, request.Id, e => e with { Products = e.Products.Add(request.Product) }));