Example #1
0
        private object GetHandler <TResult>(IQuerySpec <TResult> querySpec)
        {
            if (_dict.ContainsKey(querySpec.GetType()))
            {
                return(_dict[querySpec.GetType()]);
            }
            var handlerType = typeof(IQueryHandler <,>).MakeGenericType(querySpec.GetType(), typeof(TResult));
            var handler     = _serviceProvider.GetRequiredService(handlerType);

            _dict.Add(querySpec.GetType(), handler);
            return(handler);
        }
Example #2
0
        public async Task <TResult> ExecuteQuery <TResult>(IQuerySpec <TResult> querySpec)
        {
            var handler = GetHandler(querySpec);

            try
            {
                _logger.LogInformation($"Handling query {querySpec.GetType()}");

                var result = await(Task <TResult>)((dynamic)handler).Handle((dynamic)querySpec);
                return(result);
            }
            catch (Exception e)
            {
                _logger.LogError(e,
                                 $"Query exception occured during handling of {querySpec.GetType()} query in {handler.GetType()}");

                throw; //TODO: Decide if throwing is required
            }
        }
Example #3
0
 public Task <List <BudgetItemType> > GetListAsync(IQuerySpec <BudgetItemType> querySpec, CancellationToken cancellationToken)
 {
     throw new NotImplementedException();
 }
Example #4
0
 public Task <List <BudgetItemType> > GetListAsync(IQuerySpec <BudgetItemType> querySpec)
 {
     throw new NotImplementedException();
 }
Example #5
0
 public virtual Task <List <TEntity> > GetListAsync(IQuerySpec <TEntity> querySpec, CancellationToken cancellationToken = default(CancellationToken))
 {
     throw new NotImplementedException();
 }
 public static Task <List <TEntity> > GetListAsync <TEntity>(
     this IEntityQuery <TEntity> repo,
     IQuerySpec <TEntity> querySpec) where TEntity : class
 {
     return(repo.GetListAsync(querySpec, default(CancellationToken)));
 }
Example #7
0
 /// <summary>
 ///     Returns a query expression that, when enumerated, will retrieve only the objects that satisfy the where condition.
 /// </summary>
 public virtual Task <List <TEntity> > GetListAsync(IQuerySpec <TEntity> querySpec, CancellationToken cancellationToken)
 {
     return(QueryInternal(querySpec?.WhereExpression).ToListAsync(cancellationToken));
 }