/// <summary> /// Executes indexes creation. /// </summary> public virtual void ExecuteIndexes(List <AbstractIndexCreationTask> indexCreationTasks) { var indexesToAdd = IndexCreation.CreateIndexesToAdd(indexCreationTasks, Conventions); DatabaseCommands.PutIndexes(indexesToAdd); foreach (var task in indexCreationTasks) { task.AfterExecute(DatabaseCommands, Conventions); } }
public virtual void ExecuteIndexes(List <AbstractIndexCreationTask> indexCreationTasks) { var indexesNames = indexCreationTasks.Select(x => x.IndexName).ToArray(); var definitions = indexCreationTasks.Select(x => x.CreateIndexDefinition()).ToArray(); var priorities = indexCreationTasks.Select(x => x.Priority ?? IndexingPriority.Normal).ToArray(); DatabaseCommands.PutIndexes(indexesNames, definitions, priorities); foreach (var task in indexCreationTasks) { task.AfterExecute(DatabaseCommands, Conventions); } }
/// <summary> /// Creates the indexes found in the specified catalog /// </summary> public static void CreateIndexes(ExportProvider catalogToGetnIndexingTasksFrom, IDatabaseCommands databaseCommands, DocumentConvention conventions) { var indexCompilationExceptions = new List<IndexCompilationException>(); try { var tasks = catalogToGetnIndexingTasksFrom .GetExportedValues<AbstractIndexCreationTask>() .ToList(); var indexesToAdd = tasks .Select(x => new IndexToAdd { Definition = x.CreateIndexDefinition(), Name = x.IndexName, Priority = x.Priority ?? IndexingPriority.Normal }) .ToArray(); databaseCommands.PutIndexes(indexesToAdd); foreach (var task in tasks) task.AfterExecute(databaseCommands, conventions); } // For old servers that don't have the new entrypoint for executing multiple indexes catch (Exception) { foreach (var task in catalogToGetnIndexingTasksFrom.GetExportedValues<AbstractIndexCreationTask>()) { try { task.Execute(databaseCommands, conventions); } catch (IndexCompilationException e) { indexCompilationExceptions.Add(new IndexCompilationException("Failed to compile index name = " + task.IndexName, e)); } } } foreach (var task in catalogToGetnIndexingTasksFrom.GetExportedValues<AbstractTransformerCreationTask>()) { task.Execute(databaseCommands, conventions); } if (indexCompilationExceptions.Any()) throw new AggregateException("Failed to create one or more indexes. Please see inner exceptions for more details.", indexCompilationExceptions); }
/// <summary> /// Creates the indexes found in the specified catalog /// </summary> public static void CreateIndexes(ExportProvider catalogToGetnIndexingTasksFrom, IDatabaseCommands databaseCommands, DocumentConvention conventions) { var indexCompilationExceptions = new List <IndexCompilationException>(); try { var tasks = catalogToGetnIndexingTasksFrom .GetExportedValues <AbstractIndexCreationTask>() .ToList(); var indexesNames = tasks.Select(x => x.IndexName).ToArray(); var definitions = tasks.Select(x => x.CreateIndexDefinition()).ToArray(); var priorities = tasks.Select(x => x.Priority ?? IndexingPriority.Normal).ToArray(); databaseCommands.PutIndexes(indexesNames, definitions, priorities); foreach (var task in tasks) { task.AfterExecute(databaseCommands, conventions); } } // For old servers that don't have the new entrypoint for executing multiple indexes catch (Exception) { foreach (var task in catalogToGetnIndexingTasksFrom.GetExportedValues <AbstractIndexCreationTask>()) { try { task.Execute(databaseCommands, conventions); } catch (IndexCompilationException e) { indexCompilationExceptions.Add(new IndexCompilationException("Failed to compile index name = " + task.IndexName, e)); } } } foreach (var task in catalogToGetnIndexingTasksFrom.GetExportedValues <AbstractTransformerCreationTask>()) { task.Execute(databaseCommands, conventions); } if (indexCompilationExceptions.Any()) { throw new AggregateException("Failed to create one or more indexes. Please see inner exceptions for more details.", indexCompilationExceptions); } }
/// <summary> /// Creates the indexes found in the specified catalog /// </summary> public static void CreateIndexes(ExportProvider catalogToGetnIndexingTasksFrom, IDatabaseCommands databaseCommands, DocumentConvention conventions) { var indexCompilationExceptions = new List <IndexCompilationException>(); try { var tasks = catalogToGetnIndexingTasksFrom .GetExportedValues <AbstractIndexCreationTask>() .ToList(); var indexesToAdd = CreateIndexesToAdd(tasks, conventions); databaseCommands.PutIndexes(indexesToAdd); foreach (var task in tasks) { task.AfterExecute(databaseCommands, conventions); } } // For old servers that don't have the new endpoint for executing multiple indexes catch (Exception) { foreach (var task in catalogToGetnIndexingTasksFrom.GetExportedValues <AbstractIndexCreationTask>()) { try { task.Execute(databaseCommands, conventions); } catch (IndexCompilationException e) { indexCompilationExceptions.Add(new IndexCompilationException("Failed to compile index name = " + task.IndexName, e)); } } } CreateTransformers(catalogToGetnIndexingTasksFrom, databaseCommands, conventions); if (indexCompilationExceptions.Any()) { throw new AggregateException("Failed to create one or more indexes. Please see inner exceptions for more details.", indexCompilationExceptions); } }
/// <summary> /// Creates the indexes found in the specified assembly. /// </summary> public static void CreateIndexes(Assembly assemblyToScan, IDatabaseCommands databaseCommands, DocumentConvention conventions) { var indexCompilationExceptions = new List <IndexCompilationException>(); try { var tasks = GetAllInstancesOfType <AbstractIndexCreationTask>(assemblyToScan) .ToList(); var indexesToAdd = CreateIndexesToAdd(tasks, conventions); databaseCommands.PutIndexes(indexesToAdd); foreach (var task in tasks) { task.AfterExecute(databaseCommands, conventions); } } // For old servers that don't have the new endpoint for executing multiple indexes catch (Exception ex) { Log.InfoException("Could not create indexes in one shot (maybe using older version of RavenDB ?)", ex); foreach (var task in GetAllInstancesOfType <AbstractIndexCreationTask>(assemblyToScan)) { try { task.Execute(databaseCommands, conventions); } catch (IndexCompilationException e) { indexCompilationExceptions.Add(new IndexCompilationException("Failed to compile index name = " + task.IndexName, e)); } } } CreateTransformers(assemblyToScan, databaseCommands, conventions); if (indexCompilationExceptions.Any()) { throw new AggregateException("Failed to create one or more indexes. Please see inner exceptions for more details.", indexCompilationExceptions); } }