public OrderByQueryPartitionRangePageAsyncEnumerator(
     IQueryDataSource queryDataSource,
     SqlQuerySpec sqlQuerySpec,
     FeedRangeInternal feedRange,
     PartitionKey?partitionKey,
     int pageSize,
     string filter,
     CancellationToken cancellationToken,
     QueryState state = default)
     : base(feedRange, cancellationToken, state)
 {
     this.StartOfPageState = state;
     this.innerEnumerator  = new InnerEnumerator(
         queryDataSource,
         sqlQuerySpec,
         feedRange,
         partitionKey,
         pageSize,
         filter,
         cancellationToken,
         state);
     this.bufferedEnumerator = new BufferedPartitionRangePageAsyncEnumerator <OrderByQueryPage, QueryState>(
         this.innerEnumerator,
         cancellationToken);
 }
Esempio n. 2
0
 private static CreatePartitionRangePageAsyncEnumerator <QueryPage, QueryState> MakeCreateFunction(
     IQueryDataSource queryDataSource,
     SqlQuerySpec sqlQuerySpec,
     QueryPaginationOptions queryPaginationOptions,
     Cosmos.PartitionKey?partitionKey,
     CancellationToken cancellationToken) => (FeedRangeState <QueryState> feedRangeState) => new QueryPartitionRangePageAsyncEnumerator(
     queryDataSource,
     sqlQuerySpec,
     feedRangeState,
     partitionKey,
     queryPaginationOptions,
     cancellationToken);
Esempio n. 3
0
 private static CreatePartitionRangePageAsyncEnumerator <QueryPage, QueryState> MakeCreateFunction(
     IQueryDataSource queryDataSource,
     SqlQuerySpec sqlQuerySpec,
     int pageSize,
     Cosmos.PartitionKey?partitionKey,
     CancellationToken cancellationToken) => (FeedRangeInternal range, QueryState state) => new QueryPartitionRangePageAsyncEnumerator(
     queryDataSource,
     sqlQuerySpec,
     range,
     partitionKey,
     pageSize,
     cancellationToken: cancellationToken,
     state);
 public QueryPartitionRangePageAsyncEnumerator(
     IQueryDataSource queryDataSource,
     SqlQuerySpec sqlQuerySpec,
     PartitionKeyRange feedRange,
     int pageSize,
     CancellationToken cancellationToken,
     QueryState state = default)
     : base(feedRange, cancellationToken, state)
 {
     this.queryDataSource = queryDataSource ?? throw new ArgumentNullException(nameof(queryDataSource));
     this.sqlQuerySpec    = sqlQuerySpec ?? throw new ArgumentNullException(nameof(sqlQuerySpec));
     this.pageSize        = pageSize;
 }
Esempio n. 5
0
 public QueryPartitionRangePageAsyncEnumerator(
     IQueryDataSource queryDataSource,
     SqlQuerySpec sqlQuerySpec,
     FeedRangeState <QueryState> feedRangeState,
     Cosmos.PartitionKey?partitionKey,
     QueryPaginationOptions queryPaginationOptions,
     CancellationToken cancellationToken)
     : base(feedRangeState, cancellationToken)
 {
     this.queryDataSource        = queryDataSource ?? throw new ArgumentNullException(nameof(queryDataSource));
     this.sqlQuerySpec           = sqlQuerySpec ?? throw new ArgumentNullException(nameof(sqlQuerySpec));
     this.queryPaginationOptions = queryPaginationOptions;
     this.partitionKey           = partitionKey;
 }
 public InnerEnumerator(
     IQueryDataSource queryDataSource,
     SqlQuerySpec sqlQuerySpec,
     FeedRangeState <QueryState> feedRangeState,
     PartitionKey?partitionKey,
     QueryPaginationOptions queryPaginationOptions,
     string filter,
     CancellationToken cancellationToken)
     : base(feedRangeState, cancellationToken)
 {
     this.queryDataSource        = queryDataSource ?? throw new ArgumentNullException(nameof(queryDataSource));
     this.SqlQuerySpec           = sqlQuerySpec ?? throw new ArgumentNullException(nameof(sqlQuerySpec));
     this.PartitionKey           = partitionKey;
     this.queryPaginationOptions = queryPaginationOptions ?? QueryPaginationOptions.Default;
     this.Filter = filter;
 }
Esempio n. 7
0
        private IQuery <T, TParameters> Resolve <TParameters>(IQueryDataSource dataSource)
        {
            try
            {
                var handler = _resolver.Resolve <T, TParameters>(dataSource);
                return(handler);
            }
            catch (Exception e)
            {
                if (typeof(TParameters) == typeof(LinqToEntitiesPredicateParameters))
                {
                    throw new QueryNotFoundException(@"Не удалось найти обработчки запросов Linq to Entities. Убедитесь, что msc.Fx включена в список сборок, доступных для IQueryResolver.", e);
                }

                throw new QueryNotFoundException($"Не удалось найти реализацию IQuery<{typeof(T).ToString()}, {typeof(TParameters).ToString()}>.", e);
            }
        }
 public InnerEnumerator(
     IQueryDataSource queryDataSource,
     SqlQuerySpec sqlQuerySpec,
     FeedRangeInternal feedRange,
     PartitionKey?partitionKey,
     int pageSize,
     string filter,
     CancellationToken cancellationToken,
     QueryState state = default)
     : base(feedRange, cancellationToken, state)
 {
     this.queryDataSource = queryDataSource ?? throw new ArgumentNullException(nameof(queryDataSource));
     this.SqlQuerySpec    = sqlQuerySpec ?? throw new ArgumentNullException(nameof(sqlQuerySpec));
     this.PartitionKey    = partitionKey;
     this.PageSize        = pageSize;
     this.Filter          = filter;
 }
 public OrderByQueryPartitionRangePageAsyncEnumerator(
     IQueryDataSource queryDataSource,
     SqlQuerySpec sqlQuerySpec,
     FeedRangeState <QueryState> feedRangeState,
     PartitionKey?partitionKey,
     QueryPaginationOptions queryPaginationOptions,
     string filter,
     CancellationToken cancellationToken)
     : base(feedRangeState, cancellationToken)
 {
     this.StartOfPageState = feedRangeState.State;
     this.innerEnumerator  = new InnerEnumerator(
         queryDataSource,
         sqlQuerySpec,
         feedRangeState,
         partitionKey,
         queryPaginationOptions,
         filter,
         cancellationToken);
     this.bufferedEnumerator = new BufferedPartitionRangePageAsyncEnumerator <OrderByQueryPage, QueryState>(
         this.innerEnumerator,
         cancellationToken);
 }
        /// <summary>
        /// Recupera a origemd de ados
        /// </summary>
        /// <param name="queryInfo"></param>
        /// <returns></returns>
        private IQueryDataSource GetDataSource(QueryInfo queryInfo)
        {
            var providerName            = ProviderLocator.GetProviderName(queryInfo);
            IQueryDataSource dataSource = null;

            lock (_objLock)
                if (_queryDataSources.TryGetValue(providerName, out dataSource))
                {
                    return(dataSource);
                }
            dataSource = _serviceLocator.GetInstance <IQueryDataSource>(string.Format("{0}QueryDataSource", providerName));
            if (dataSource == null)
            {
                throw new Exception(ResourceMessageFormatter.Create(() => Properties.Resources.DataSourceUndefined).Format());
            }
            lock (_objLock)
            {
                if (!_queryDataSources.ContainsKey(providerName))
                {
                    _queryDataSources.Add(providerName, dataSource);
                }
            }
            return(dataSource);
        }
Esempio n. 11
0
 // Через DI передеаем все с чем нужно взаимодействовать.
 // Можно передать и DbConnection, правда для такого сценария есть ISqlDataSource
 public GetUserShedules(IQueryDataSource dataSource) : base(dataSource)
 {
 }
Esempio n. 12
0
 public QueryProcessor(IQueryResolver resolver, IQueryDataSource dataSource)
 {
     _resolver   = resolver;
     _dataSource = dataSource;
 }
Esempio n. 13
0
 protected Query(IQueryDataSource dataSource) : base(dataSource)
 {
 }
Esempio n. 14
0
 // Через DI передеаем все с чем нужно взаимодействовать.
 // Можно передать и DbConnection, правда для такого сценария есть ISqlDataSource
 public FindUsers(IQueryDataSource dataSource) : base(dataSource)
 {
 }
 private static CreatePartitionRangePageAsyncEnumerator <QueryPage, QueryState> MakeCreateFunction(
     IQueryDataSource queryDataSource,
     SqlQuerySpec sqlQuerySpec,
     int pageSize) => (PartitionKeyRange range, QueryState state) => new QueryPartitionRangePageAsyncEnumerator(
Esempio n. 16
0
 protected QueryBase(IQueryDataSource dataSource)
 {
     DataSource = dataSource;
 }
 public LinqToEntitiesPredicateQuery(IQueryDataSource dataSource) : base(dataSource)
 {
 }
Esempio n. 18
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="dataSource">Fonte de dados</param>
 public SqlSourceContext(IQueryDataSource dataSource)
 {
     dataSource.Require("dataSource").NotNull();
     _dataSource = dataSource;
 }
Esempio n. 19
0
 public IQuery <T, TParameters> Resolve <T, TParameters>(IQueryDataSource dataSource)
 {
     return(_container.With(dataSource).GetInstance <IQuery <T, TParameters> >());
 }
Esempio n. 20
0
 // Через DI передеаем все с чем нужно взаимодействовать.
 // Можно передать и DbConnection, правда для такого сценария есть ISqlDataSource
 public GetScheduleById(IQueryDataSource dataSource) : base(dataSource)
 {
 }
Esempio n. 21
0
 // Через DI передеаем все с чем нужно взаимодействовать.
 // Можно передать и DbConnection, правда для такого сценария есть ISqlDataSource
 public GetUserById(IQueryDataSource dataSource) : base(dataSource)
 {
 }
Esempio n. 22
0
 /// <summary>
 /// Executa a consulta.
 /// </summary>
 /// <returns>Resultado na forma de um vetor de <see cref="QueryResult"/></returns>
 public IEnumerable <IQueryResult> Execute(IQueryDataSource dataSource)
 {
     dataSource.Require("dataSource").NotNull();
     return(dataSource.Execute(CreateQueryInfos()));
 }