public BulkRequestDescriptor CreateMany()

in src/Elastic.Clients.Elasticsearch/_Shared/Api/BulkRequest.cs [173:230]


	public BulkRequestDescriptor CreateMany<TSource>(IEnumerable<TSource> documents, Action<BulkCreateOperationDescriptor<TSource>, TSource> bulkCreateSelector) =>
		AddOperations(documents, bulkCreateSelector, o => new BulkCreateOperationDescriptor<TSource>(o), x => x.Instance);

	public BulkRequestDescriptor CreateMany<TSource>(IEnumerable<TSource> documents) =>
		AddOperations(documents, null, o => new BulkCreateOperationDescriptor<TSource>(o), x => x.Instance);

	public BulkRequestDescriptor IndexMany<TSource>(IEnumerable<TSource> documents, Action<BulkIndexOperationDescriptor<TSource>, TSource> bulkIndexSelector) =>
		AddOperations(documents, bulkIndexSelector, o => new BulkIndexOperationDescriptor<TSource>(o), x => x.Instance);

	public BulkRequestDescriptor IndexMany<TSource>(IEnumerable<TSource> documents) =>
		AddOperations(documents, null, o => new BulkIndexOperationDescriptor<TSource>(o), x => x.Instance);

	public BulkRequestDescriptor UpdateMany<TSource>(IEnumerable<TSource> objects, Action<BulkUpdateOperationDescriptor<TSource, TSource>, TSource> bulkIndexSelector) =>
		AddOperations(objects, bulkIndexSelector, o => new BulkUpdateOperationDescriptor<TSource, TSource>().IdFrom(o), x => x.Instance);

	public BulkRequestDescriptor UpdateMany<TSource>(IEnumerable<TSource> objects) =>
		AddOperations(objects, null, o => new BulkUpdateOperationDescriptor<TSource, TSource>().IdFrom(o), x => x.Instance);

	public BulkRequestDescriptor DeleteMany<T>(IEnumerable<T> objects, Action<BulkDeleteOperationDescriptor, T> bulkDeleteSelector) =>
		AddOperations(objects, bulkDeleteSelector, obj => new BulkDeleteOperationDescriptor(new Id(obj)), x => x.Instance);

	public BulkRequestDescriptor DeleteMany(IEnumerable<Id> ids, Action<BulkDeleteOperationDescriptor, Id> bulkDeleteSelector) =>
		AddOperations(ids, bulkDeleteSelector, id => new BulkDeleteOperationDescriptor(id), x => x.Instance);

	public BulkRequestDescriptor DeleteMany<T>(IEnumerable<T> objects) =>
		AddOperations(objects, null, obj => new BulkDeleteOperationDescriptor<T>(obj), x => x.Instance);

	public BulkRequestDescriptor DeleteMany(IndexName index, IEnumerable<Id> ids) =>
		AddOperations(ids, null, id => new BulkDeleteOperationDescriptor(id).Index(index), x => x.Instance);

	private BulkRequestDescriptor AddOperations<TSource, TDescriptor>(
		IEnumerable<TSource>? objects,
		Action<TDescriptor, TSource>? configureDescriptor,
		Func<TSource, TDescriptor> createDescriptor,
		Func<TDescriptor, IBulkOperation> getInstance)
	{
		if (@objects == null)
			return this;

		var objectsList = @objects.ToList();
		var operations = new List<IBulkOperation>(objectsList.Count());

		foreach (var o in objectsList)
		{
			var descriptor = createDescriptor(o);

			if (configureDescriptor is not null)
			{
				configureDescriptor(descriptor, o);
			}

			operations.Add(getInstance(descriptor));
		}

		Instance.Operations ??= new();
		Instance.Operations.AddRange(operations);
		return this;
	}