public void Delete() { using (var client = new MyCouchClient(_databaseUri, _databaseName)) { QueryViewRequest request = new QueryViewRequest( "bookorders", "allOrders"); request.Configure(parameters => parameters.IncludeDocs(true)); ViewQueryResponse <string> results = client.Views.QueryAsync <string>(request).Result; var bulkRequest = new BulkRequest() { AllOrNothing = false }; foreach (var resultsRow in results.Rows) { BookOrderDto dto = JsonConvert.DeserializeObject <BookOrderDto>( resultsRow.IncludedDoc); bulkRequest.Delete(dto._id, dto._rev); Console.WriteLine($"Delete request for id:{dto._id}"); } client.Documents.BulkAsync(bulkRequest).Wait(); } }
private static async void BulkDelete(IMyCouchClient client, ViewQueryResponse <dynamic> response) { if (response.IsEmpty) { return; } var bulkRequest = new BulkRequest(); foreach (var row in response.Rows) { bulkRequest.Delete(row.Id, row.Value.rev.ToString()); } await client.Documents.BulkAsync(bulkRequest).ForAwait(); }
private static void BulkDelete(IMyCouchClient client, ViewQueryResponse <dynamic> response) { if (response.IsEmpty) { return; } var bulkRequest = new BulkRequest(); foreach (var row in response.Rows) { if (row.Id.ToLower() == "_design/_replicator") { continue; } bulkRequest.Delete(row.Id, row.Value.rev.ToString()); } if (!bulkRequest.IsEmpty) { client.Documents.BulkAsync(bulkRequest).Wait(); } }
public async Task <BatchResponse> Store(string bucketName, BatchSet batch) { using (var client = new MyCouchClient(DbServerUrl, bucketName)) { var dbExists = await client.Database.HeadAsync(); if (dbExists.IsSuccess) { BulkRequest bulkRequest = new BulkRequest(); DateTime start = DateTime.Now; int size = 0; SiaqodbDocument crObjForUpdateViews = null; if (batch.ChangedDocuments != null) { foreach (SiaqodbDocument obj in batch.ChangedDocuments) { if (obj != null) { if (crObjForUpdateViews == null) { crObjForUpdateViews = obj; } await CheckTagsViews(client, bucketName, obj.Tags); CouchDBDocument doc = Mapper.ToCouchDBDoc(obj); var serializedObject = client.Serializer.Serialize <CouchDBDocument>(doc); bulkRequest.Include(serializedObject); size += serializedObject.Length; } } } if (batch.DeletedDocuments != null) { foreach (DeletedDocument obj in batch.DeletedDocuments) { if (obj != null) { if (obj.Version != null)//otherwise means is a non-existing object { bulkRequest.Delete(obj.Key, obj.Version); } } } } var response = await client.Documents.BulkAsync(bulkRequest); if (response.IsSuccess) { var cnorResponse = new BatchResponse(); if (response.Rows != null) { cnorResponse.BatchItemResponses = new List <BatchItemResponse>(); SyncLogItem syncLogItem = new SyncLogItem(); syncLogItem.KeyVersion = new Dictionary <string, string>(); foreach (var row in response.Rows) { BatchItemResponse wresp = new BatchItemResponse(); if (!string.IsNullOrEmpty(row.Error)) { cnorResponse.ItemsWithErrors++; } wresp.Error = row.Error; wresp.ErrorDesc = row.Reason; wresp.Key = row.Id; wresp.Version = row.Rev; cnorResponse.BatchItemResponses.Add(wresp); if (string.IsNullOrEmpty(row.Error)) { syncLogItem.KeyVersion.Add(row.Id, row.Rev); } } if (syncLogItem.KeyVersion.Count > 0) { syncLogItem.TimeInserted = DateTime.UtcNow; using (var clientLog = new MyCouchClient(DbServerUrl, SyncLogBucket)) { string serLogItem = Newtonsoft.Json.JsonConvert.SerializeObject(syncLogItem); var logResp = await clientLog.Documents.PostAsync(serLogItem); cnorResponse.UploadAnchor = logResp.Id; } } } if (crObjForUpdateViews != null) { await this.StartRebuildViews(client, crObjForUpdateViews); } return(cnorResponse); } else { CheckBucketNotFound(bucketName, response); } } else if (dbExists.StatusCode == System.Net.HttpStatusCode.NotFound) { throw new BucketNotFoundException(bucketName); } return(null); } }