using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace PoweredSoft.DynamicQuery.Core { public interface IInterceptableQueryHandler { void AddInterceptor(IQueryInterceptor interceptor); IReadOnlyList ResolveInterceptors(IQueryCriteria criteria, IQueryable queryable); } public interface IQueryHandler : IInterceptableQueryHandler { IQueryExecutionResult Execute(IQueryable queryable, IQueryCriteria criteria); IQueryExecutionResult Execute(IQueryable queryable, IQueryCriteria criteria); IQueryExecutionResult Execute(IQueryable queryable, IQueryCriteria criteria, IQueryExecutionOptions options); IQueryExecutionResult Execute(IQueryable queryable, IQueryCriteria criteria, IQueryExecutionOptions options); } public interface IQueryHandlerAsync : IInterceptableQueryHandler { Task> ExecuteAsync(IQueryable queryable, IQueryCriteria criteria, CancellationToken cancellationToken = default); Task> ExecuteAsync(IQueryable queryable, IQueryCriteria criteria, CancellationToken cancellationToken = default); Task> ExecuteAsync(IQueryable queryable, IQueryCriteria criteria, IQueryExecutionOptions options, CancellationToken cancellationToken = default); Task> ExecuteAsync(IQueryable queryable, IQueryCriteria criteria, IQueryExecutionOptions options, CancellationToken cancellationToken = default); } }