private static RequestOptions GetRequestOptions(IHaveRequestOptions request)
 {
     return(new RequestOptions
     {
         ConsistencyLevel = request.ConsistencyLevel,
         IndexingDirective = request.IndexingDirective,
         PreTriggerInclude = request.PreTrigger != null ? new List <string> {
             request.PreTrigger
         } : null,
         PostTriggerInclude = request.PreTrigger != null ? new List <string> {
             request.PostTrigger
         } : null,
         PartitionKey = GetPartitionKey(request.PartitionKeyValue),
         AccessCondition = request.AccessConditionType != null ? new AccessCondition {
             Condition = request.AccessCondition, Type = request.AccessConditionType.Value
         } : null,
     });
 }
 private static RequestOptions GetRequestOptions(IHaveRequestOptions request)
 {
     return(new RequestOptions
     {
         ConsistencyLevel = request.ConsistencyLevel,
         IndexingDirective = request.IndexingDirective,
         PreTriggerInclude = request.PreTrigger != null ? new List <string> {
             request.PreTrigger
         } : null,
         PostTriggerInclude = request.PreTrigger != null ? new List <string> {
             request.PostTrigger
         } : null,
         PartitionKey = GetPartitionKey(request.PartitionKeyValue),
         AccessCondition = request.AccessConditionType != null ? new AccessCondition {
             Condition = request.AccessCondition, Type = request.AccessConditionType.Value
         } : null,
         JsonSerializerSettings = new JsonSerializerSettings {
             DateParseHandling = DateParseHandling.None
         }
     });
 }
        public Task <ResourceResponse <Document> > UpdateDocumentAsync(Connection connection, string altLink, string content, IHaveRequestOptions requestOptions)
        {
            var instance = JObject.Parse(content);
            var options  = GetRequestOptions(requestOptions);

            return(GetClient(connection).UpsertDocumentAsync(altLink, instance, options));
        }
        public async Task <int> ImportDocumentAsync(Connection connection, DocumentCollection collection, string content, IHaveRequestOptions requestOptions, CancellationToken cancellationToken)
        {
            var documents = GetDocuments(content).ToList();
            var options   = GetRequestOptions(requestOptions);

            foreach (var document in documents)
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    cancellationToken.ThrowIfCancellationRequested();
                }

                await GetClient(connection).UpsertDocumentAsync(collection.SelfLink, document, options, disableAutomaticIdGeneration: true).ConfigureAwait(false);
            }

            return(documents.Count);
        }
        public async Task <DocumentDescriptionList> GetDocumentsAsync(Connection connection, DocumentCollection collection, string filter, int maxItems, string continuationToken, IHaveRequestOptions requestOptions)
        {
            var token = collection.PartitionKey.GetQueryToken();

            if (token != null)
            {
                token = $", c{token} as _partitionKey";
            }

            var sql = $"SELECT c.id, c._self {token} FROM c {filter}";

            var feedOptions = new FeedOptions
            {
                MaxItemCount              = maxItems,
                RequestContinuation       = continuationToken,
                EnableCrossPartitionQuery = true,
                EnableScanInQuery         = false,
                PartitionKey              = GetPartitionKey(requestOptions?.PartitionKeyValue),

                MaxDegreeOfParallelism = -1,
                MaxBufferedItemCount   = -1,
                PopulateQueryMetrics   = true,
            };

            var data = await GetClient(connection)
                       .CreateDocumentQuery(collection.DocumentsLink, sql, feedOptions)
                       .AsDocumentQuery()
                       .ExecuteNextAsync <DocumentDescription>().ConfigureAwait(true);

            return(new DocumentDescriptionList(data.ToList())
            {
                ContinuationToken = data.ResponseContinuation,
                RequestCharge = data.RequestCharge
            });
        }