diff --git a/Demo/Queries/ListPersonQuery.cs b/Demo/Queries/ListPersonQuery.cs new file mode 100644 index 0000000..013521b --- /dev/null +++ b/Demo/Queries/ListPersonQuery.cs @@ -0,0 +1,32 @@ +using PoweredSoft.CQRS.Abstractions; +using PoweredSoft.CQRS.DynamicQuery.Abstractions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace Demo.Queries +{ + public class OnePersonQuery + { + public long PersonId { get; set; } + } + + public class OnePersonQueryHandler : IQueryHandler + { + private readonly IQueryableProvider provider; + + public OnePersonQueryHandler(IQueryableProvider provider) + { + this.provider = provider; + } + + public async Task HandleAsync(OnePersonQuery query, CancellationToken cancellationToken = default) + { + var _ = await provider.GetQueryableAsync(query, cancellationToken); + var ret = _.First(t => t.Id == query.PersonId); + return ret; + } + } +} diff --git a/Demo/Queries/OnePerson.cs b/Demo/Queries/OnePerson.cs new file mode 100644 index 0000000..4ae19ca --- /dev/null +++ b/Demo/Queries/OnePerson.cs @@ -0,0 +1,39 @@ +using PoweredSoft.CQRS.Abstractions; +using PoweredSoft.CQRS.DynamicQuery.Abstractions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace Demo.Queries +{ + public class ListPersonQuery + { + public string Search { get; set; } + } + + public class ListPersonQueryHandler : IQueryHandler> + { + private readonly IQueryableProvider provider; + + public ListPersonQueryHandler(IQueryableProvider provider) + { + this.provider = provider; + } + + public async Task> HandleAsync(ListPersonQuery query, CancellationToken cancellationToken = default) + { + var _ = await provider.GetQueryableAsync(query, cancellationToken); + + if (query.Search != null) + _ = _ + .Where(t => t.FirstName.Contains(query.Search, StringComparison.InvariantCultureIgnoreCase) || + t.LastName.Contains(query.Search, StringComparison.InvariantCultureIgnoreCase)); + + + var ret = _.ToList(); + return ret; + } + } +} diff --git a/Demo/Startup.cs b/Demo/Startup.cs index fdc750e..fc42e60 100644 --- a/Demo/Startup.cs +++ b/Demo/Startup.cs @@ -26,6 +26,7 @@ using PoweredSoft.CQRS.Abstractions.Security; using Demo.Security; using PoweredSoft.CQRS.FluentValidation; using Microsoft.AspNetCore.OData; +using System.Collections.Generic; namespace Demo { @@ -105,6 +106,8 @@ namespace Demo private void AddQueries(IServiceCollection services) { services.AddQuery, PersonQueryHandler>(); + services.AddQuery(); + services.AddQuery, ListPersonQueryHandler>(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.