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));
            }
        }
示例#2
0
        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)
            }));