internal static void ClearAllDocuments(this IClient client) { var query = new QuerySystemViewRequest("_all_docs"); var response = client.Views.QueryAsync<dynamic>(query).Result; if (!response.IsEmpty) { var bulkRequest = new BulkRequest(); foreach (var row in response.Rows) bulkRequest.Delete(row.Id, row.Value.rev.ToString()); client.Documents.BulkAsync(bulkRequest).Wait(); } }
public void CleanupDatabase() { var view = this.db.Views.QueryAsync(new QueryViewRequest("person", "all_rev")).Result; var request = new BulkRequest(); if (view.TotalRows > 0) { var rows = view.Rows.Select(x => new { Id = x.Id, Rev = x.Value.TrimStart('\"').TrimEnd('\"'), }); foreach (var row in rows) { request = request.Delete(row.Id, row.Rev); } /* rows.Batch(1000).ForEach(x => { Task.WaitAll(x.Select(w => this.db.Documents.DeleteAsync(new DeleteDocumentRequest(w.Id, w.Rev))).ToArray()); }); */ } this.db.Documents.BulkAsync(request).Wait(); }
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; } }