/// <summary> /// Perform a set based update using the specified index /// </summary> /// <param name="indexName">Name of the index.</param> /// <param name="queryToUpdate">The query to update.</param> /// <param name="patch">The patch request to use (using JavaScript)</param> /// <param name="allowStale">if set to <c>true</c> [allow stale].</param> public void UpdateByIndex(string indexName, IndexQuery queryToUpdate, ScriptedPatchRequest patch, bool allowStale) { CurrentOperationContext.Headers.Value = OperationsHeaders; var databaseBulkOperations = new DatabaseBulkOperations(database, RavenTransactionAccessor.GetTransactionInformation()); databaseBulkOperations.UpdateByIndex(indexName, queryToUpdate, patch, allowStale); }
public async Task <HttpResponseMessage> BulkEval(string id) { RavenJObject advPatchRequestJson; try { advPatchRequestJson = await ReadJsonObjectAsync <RavenJObject>(); } catch (InvalidOperationException e) { Log.DebugException("Failed to deserialize document batch request.", e); return(GetMessageWithObject(new { Message = "Could not understand json, please check its validity." }, (HttpStatusCode)422)); //http code 422 - Unprocessable entity } catch (InvalidDataException e) { Log.DebugException("Failed to deserialize document batch request.", e); return(GetMessageWithObject(new { e.Message }, (HttpStatusCode)422)); //http code 422 - Unprocessable entity } // we don't use using because execution is async var cts = new CancellationTokenSource(); var timeout = cts.TimeoutAfter(DatabasesLandlord.SystemConfiguration.DatabaseOperationTimeout); var databaseBulkOperations = new DatabaseBulkOperations(Database, GetRequestTransaction(), cts, timeout); var advPatch = ScriptedPatchRequest.FromJson(advPatchRequestJson); return(OnBulkOperation((index, query, options) => databaseBulkOperations.UpdateByIndex(index, query, advPatch, options), id, timeout)); }
/// <summary> /// Perform a set based deletes using the specified index. /// </summary> /// <param name="indexName">Name of the index.</param> /// <param name="queryToDelete">The query to delete.</param> /// <param name="allowStale">if set to <c>true</c> [allow stale].</param> public void DeleteByIndex(string indexName, IndexQuery queryToDelete, bool allowStale) { CurrentOperationContext.Headers.Value = OperationsHeaders; var databaseBulkOperations = new DatabaseBulkOperations(database, TransactionInformation); databaseBulkOperations.DeleteByIndex(indexName, queryToDelete, allowStale); }
/// <summary> /// Perform a set based update using the specified index. /// </summary> /// <param name="indexName">Name of the index.</param> /// <param name="queryToUpdate">The query to update.</param> /// <param name="patchRequests">The patch requests.</param> /// <param name="allowStale">if set to <c>true</c> [allow stale].</param> public void UpdateByIndex(string indexName, IndexQuery queryToUpdate, PatchRequest[] patchRequests, bool allowStale) { CurrentOperationContext.Headers.Value = OperationsHeaders; var databaseBulkOperations = new DatabaseBulkOperations(database, TransactionInformation); databaseBulkOperations.UpdateByIndex(indexName, queryToUpdate, patchRequests, allowStale); }
public override void Respond(IHttpContext context) { var databaseBulkOperations = new DatabaseBulkOperations(Database, GetRequestTransaction(context)); switch (context.Request.HttpMethod) { case "POST": Batch(context); break; case "DELETE": OnBulkOperation(context, databaseBulkOperations.DeleteByIndex); break; case "PATCH": var patchRequestJson = context.ReadJsonArray(); var patchRequests = patchRequestJson.Cast <RavenJObject>().Select(PatchRequest.FromJson).ToArray(); OnBulkOperation(context, (index, query, allowStale) => databaseBulkOperations.UpdateByIndex(index, query, patchRequests, allowStale)); break; case "EVAL": var advPatchRequestJson = context.ReadJsonObject <RavenJObject>(); var advPatch = ScriptedPatchRequest.FromJson(advPatchRequestJson); OnBulkOperation(context, (index, query, allowStale) => databaseBulkOperations.UpdateByIndex(index, query, advPatch, allowStale)); break; } }
public HttpResponseMessage BulkDelete(string id) { using (var cts = new CancellationTokenSource()) using (var timeout = cts.TimeoutAfter(DatabasesLandlord.SystemConfiguration.DatbaseOperationTimeout)) { var databaseBulkOperations = new DatabaseBulkOperations(Database, GetRequestTransaction(), cts.Token, timeout); return(OnBulkOperation(databaseBulkOperations.DeleteByIndex, id)); } }
public async Task <HttpResponseMessage> BulkEval(string id) { using (var cts = new CancellationTokenSource()) using (var timeout = cts.TimeoutAfter(DatabasesLandlord.SystemConfiguration.DatbaseOperationTimeout)) { var databaseBulkOperations = new DatabaseBulkOperations(Database, GetRequestTransaction(), cts.Token, timeout); var advPatchRequestJson = await ReadJsonObjectAsync <RavenJObject>(); var advPatch = ScriptedPatchRequest.FromJson(advPatchRequestJson); return(OnBulkOperation((index, query, allowStale) => databaseBulkOperations.UpdateByIndex(index, query, advPatch, allowStale), id)); } }
public async Task <HttpResponseMessage> BulkPatch(string id) { using (var cts = new CancellationTokenSource()) using (var timeout = cts.TimeoutAfter(DatabasesLandlord.SystemConfiguration.DatbaseOperationTimeout)) { var databaseBulkOperations = new DatabaseBulkOperations(Database, GetRequestTransaction(), cts.Token, timeout); var patchRequestJson = await ReadJsonArrayAsync(); var patchRequests = patchRequestJson.Cast <RavenJObject>().Select(PatchRequest.FromJson).ToArray(); return(OnBulkOperation((index, query, allowStale) => databaseBulkOperations.UpdateByIndex(index, query, patchRequests, allowStale), id)); } }
public async Task <HttpResponseMessage> BulkEval(string id) { // we don't use using because execution is async var cts = new CancellationTokenSource(); var timeout = cts.TimeoutAfter(DatabasesLandlord.SystemConfiguration.DatabaseOperationTimeout); var databaseBulkOperations = new DatabaseBulkOperations(Database, GetRequestTransaction(), cts, timeout); var advPatchRequestJson = await ReadJsonObjectAsync <RavenJObject>(); var advPatch = ScriptedPatchRequest.FromJson(advPatchRequestJson); return(OnBulkOperation((index, query, options) => databaseBulkOperations.UpdateByIndex(index, query, advPatch, options), id, cts)); }
public override void Respond(IHttpContext context) { var databaseBulkOperations = new DatabaseBulkOperations(Database, GetRequestTransaction(context)); switch (context.Request.HttpMethod) { case "POST": Batch(context); break; case "DELETE": OnBulkOperation(context, databaseBulkOperations.DeleteByIndex); break; case "PATCH": var patchRequestJson = context.ReadJsonArray(); var patchRequests = patchRequestJson.Cast<JObject>().Select(PatchRequest.FromJson).ToArray(); OnBulkOperation(context, (index, query, allowStale) => databaseBulkOperations.UpdateByIndex(index, query, patchRequests, allowStale)); break; } }
public async Task <HttpResponseMessage> BulkPatch(string id) { RavenJArray patchRequestJson; try { patchRequestJson = await ReadJsonArrayAsync().ConfigureAwait(false); } catch (InvalidOperationException e) { if (Log.IsDebugEnabled) { Log.DebugException("Failed to read json documents batch.", e); } return(GetMessageWithObject(new { Message = "Could not understand json, please check its validity." }, (HttpStatusCode)422)); //http code 422 - Unprocessable entity } catch (InvalidDataException e) { if (Log.IsDebugEnabled) { Log.DebugException("Failed to read json documents batch.", e); } return(GetMessageWithObject(new { e.Message }, (HttpStatusCode)422)); //http code 422 - Unprocessable entity } // we don't use using because execution is async var cts = new CancellationTokenSource(); var timeout = cts.TimeoutAfter(DatabasesLandlord.SystemConfiguration.DatabaseOperationTimeout); var databaseBulkOperations = new DatabaseBulkOperations(Database, GetRequestTransaction(), cts, timeout); var patchRequests = patchRequestJson.Cast <RavenJObject>().Select(PatchRequest.FromJson).ToArray(); return(OnBulkOperation((index, query, options, reportProgress) => databaseBulkOperations.UpdateByIndex(index, query, patchRequests, options, reportProgress), id, timeout)); }
public HttpResponseMessage BulkDelete(string id) { var indexDefinition = Database.IndexDefinitionStorage.GetIndexDefinition(id); if (indexDefinition == null) { throw new IndexDoesNotExistsException(string.Format("Index '{0}' does not exist.", id)); } if (indexDefinition.IsMapReduce) { throw new InvalidOperationException("Cannot execute DeleteByIndex operation on Map-Reduce indexes."); } // we don't use using because execution is async var cts = new CancellationTokenSource(); var timeout = cts.TimeoutAfter(DatabasesLandlord.SystemConfiguration.DatabaseOperationTimeout); var databaseBulkOperations = new DatabaseBulkOperations(Database, GetRequestTransaction(), cts, timeout); return(OnBulkOperation(databaseBulkOperations.DeleteByIndex, id, timeout)); }
public void UpdateByIndex(string indexName, IndexQuery queryToUpdate, PatchRequest[] patchRequests, bool allowStale) { var databaseBulkOperations = new DatabaseBulkOperations(database, RavenTransactionAccessor.GetTransactionInformation()); databaseBulkOperations.UpdateByIndex(indexName, queryToUpdate, patchRequests, allowStale); }
public void DeleteByIndex(string indexName, IndexQuery queryToDelete, bool allowStale) { var databaseBulkOperations = new DatabaseBulkOperations(database, RavenTransactionAccessor.GetTransactionInformation()); databaseBulkOperations.DeleteByIndex(indexName, queryToDelete, allowStale); }