示例#1
0
        public async Task <decimal> GetCurrentBalance(Guid accountId, CancellationToken cancellationToken)
        {
            var query = new GetAccountTransactionsQuery()
            {
                AccountId = accountId
            };

            return(await _queryHandler.Query <Transaction, decimal>(query, cancellationToken));
        }
        protected override object DoQuery(Context context)
        {
            var          handlerConfig = context.HandlerConfig;
            var          queryConfigs  = context.Configs;
            var          queryParam    = context.Params;
            IValueSetter valueSetter   = handlerConfig.Create();

            object outData = valueSetter.CreateInstance();

            context.Data = outData;

            IDictionary <string, object> contentData = new ExpandoObject();
            IValueSetter contentSetter = ValueSetterCreater.Create(contentData);

            foreach (var queryConfig in queryConfigs)
            {
                IQueryHandler          queryHandler          = QueryHandlerFactory.GetQueryHandler(queryConfig.QueryType);
                IConditionQueryHandler conditionQueryHandler = queryHandler as IConditionQueryHandler;
                var subContext = new Context(context)
                {
                    Data    = contentData,
                    Configs = new QueryConfig[] { queryConfig }
                };

                if (conditionQueryHandler != null)
                {
                    var isContinue = conditionQueryHandler.Continue(subContext);
                    if (isContinue == false)
                    {
                        if (conditionQueryHandler.WhetheStop(subContext))
                        {
                            return(outData);
                        }

                        continue;
                    }
                }

                context.Childs.Add(subContext);
                var data = queryHandler.Query(subContext);
                contentSetter.SetFieldByConfig(contentData, data, queryConfig);
                if (conditionQueryHandler != null)
                {
                    var result = conditionQueryHandler.WhetheResultStop(subContext, data);
                    if (result == true)
                    {
                        return(outData);
                    }
                }

                if (queryConfig.IngoreFill == true)
                {
                    continue;
                }

                valueSetter.SetField(queryConfig.Filed, data);
            }

            return(outData);
        }
示例#3
0
        protected override object DoQuery(Context context)
        {
            var           conditionSetting = GetConditionModel(context);
            IQueryHandler queryHandler     = QueryHandlerFactory.GetQueryHandler(conditionSetting.QueryType);

            return(queryHandler.Query(context));
        }
示例#4
0
文件: Data.cs 项目: wang-shun/Spreads
 public                        DataObject this[string query]
 {
     get
     {
         if (QueryHandler != null)
         {
             return(QueryHandler.Query(query));
         }
         throw new NotImplementedException("Query handler is not implemented.");
     }
 }
示例#5
0
文件: Data.cs 项目: pangfd/Spreads
            public                        DataObject this[string query]
            {
                get
                {
                    if (QueryHandler == null)
                    {
                        if (Settings.QueryHandlerFactory != null)
                        {
                            QueryHandler = Settings.QueryHandlerFactory();
                        }

                        if (QueryHandler == null)
                        {
                            throw new NotImplementedException("Query handler is not implemented.");
                        }
                    }
                    return(QueryHandler.Query(query));
                }
            }
示例#6
0
        public static object Query(HandlerConfig handlerConfig, object complexData, IDictionary <string, object> queryParams = null)
        {
            IQueryHandler queryHandler = QueryHandlerFactory.GetQueryHandler(handlerConfig.QueryType);

            if (handlerConfig.Configs == null || handlerConfig.Configs.Any() == false)
            {
                throw new ArgumentNullException("handlerConfig.Configs");
            }

            var context = new Context
            {
                HandlerConfig = handlerConfig,
                Configs       = handlerConfig.Configs,
                Params        = queryParams,
                ComplexData   = complexData,
            };

            ParamConvertUtil.DoConvert(context);
            var returnData = queryHandler.Query(context);

            //执行完查询后回调
            return(handlerConfig.OnQueryEnd(returnData, queryParams));
        }
示例#7
0
 public async Task <IEnumerable <GameResult> > Get(Guid gameId)
 {
     return(await _detailedGameQueryHandler.Query(new GameQuery { GameId = gameId }));
 }
示例#8
0
 public async Task <IEnumerable <GameResult> > Get(DefaultQuery query)
 {
     return(await _gameQueryHandler.Query(query));
 }
示例#9
0
        public void ExcuteSubQueries(Context context, QueryConfig queryConfig, IValueSetter valueSetter, IEnumerable <object> parents)
        {
            if (queryConfig.Config == null ||
                queryConfig.Config["related_queries"] == null ||
                parents.Any() == false)
            {
                return;
            }

            var relatedQueryConfigs = JsonConvert.DeserializeObject <IEnumerable <ReleatedQuery> >(queryConfig.Config["related_queries"].ToString());

            if (relatedQueryConfigs.Any() == false)
            {
                return;
            }

            IDictionary <string, object> contentData = new ExpandoObject();

            foreach (var relatedQueryConfig in relatedQueryConfigs)
            {
                IQueryHandler          queryHandler          = QueryHandlerFactory.GetQueryHandler(relatedQueryConfig.QueryType);
                IConditionQueryHandler conditionQueryHandler = queryHandler as IConditionQueryHandler;

                var subContext = new Context(context)
                {
                    Data    = contentData,
                    Configs = new QueryConfig[] { relatedQueryConfig },
                    Params  = context.Params
                };

                if (conditionQueryHandler != null)
                {
                    var isContinue = conditionQueryHandler.Continue(subContext);
                    if (isContinue == false)
                    {
                        if (conditionQueryHandler.WhetheStop(subContext))
                        {
                            return;
                        }

                        continue;
                    }
                }

                context.Childs.Add(subContext);
                var obj = queryHandler.Query(subContext);
                if (!string.IsNullOrEmpty(relatedQueryConfig.Filed))
                {
                    contentData.Add(relatedQueryConfig.Filed, obj);
                }

                if (conditionQueryHandler != null)
                {
                    var result = conditionQueryHandler.WhetheResultStop(subContext, obj);
                    if (result == true)
                    {
                        return;
                    }
                }

                if (relatedQueryConfig.IngoreFill)
                {
                    continue;
                }

                SetSubQueryValue(relatedQueryConfig, valueSetter, parents, (IEnumerable <object>)obj);
            }
        }
 public async Task <IEnumerable <TResult> > Query(TQuery query)
 {
     _logger.Information("Query = {Query}, Json = {@Json}", query.GetType().FullName, query);
     return(await _handler.Query(query));
 }
示例#11
0
 public async Task <IEnumerable <TeamResult> > Get(DefaultQuery query)
 {
     return(await _teamQueryHandler.Query(query));
 }