Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@ public string Resolve(IndexName i)
}

public string Resolve(Type type)
{
var indexName = TryResolve(type);
ValidateIndexName(indexName);
return indexName;
}

public string? TryResolve(Type type)
{
var indexName = _transportClientSettings.DefaultIndex;
var defaultIndices = _transportClientSettings.DefaultIndices;
Expand All @@ -36,8 +43,8 @@ public string Resolve(Type type)
if (defaultIndices.TryGetValue(type, out var value) && !string.IsNullOrEmpty(value))
indexName = value;
}
ValidateIndexName(indexName);
return indexName;

return string.IsNullOrWhiteSpace(indexName) ? null : indexName;
}

private static string PrefixClusterName(IndexName i, string name) => i.Cluster.IsNullOrEmpty() ? name : $"{i.Cluster}:{name}";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ public Inferrer(IElasticsearchClientSettings elasticsearchClientSettings)

public string IndexName(IndexName index) => IndexNameResolver.Resolve(index);

public string? TryIndexName(Type type) => IndexNameResolver.TryResolve(type);

public string? Id<[DynamicallyAccessedMembers(PublicProperties | NonPublicProperties)] T>(T instance) => IdResolver.Resolve(instance);

public string? Id([DynamicallyAccessedMembers(PublicProperties | NonPublicProperties)] Type type, object instance) => IdResolver.Resolve(type, instance);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,6 @@ protected override void SetValues(IElasticsearchClientSettings settings)
if (!string.IsNullOrEmpty(routing.GetString(settings)))
Routing = routing;
}

Index ??= typeof(T);
}

protected override Type ClrType => typeof(T);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,5 @@ public BulkDeleteOperationDescriptor(TDocument documentToDelete) :
this(new Id(documentToDelete))
{
Instance.Routing = new Routing(documentToDelete);
Instance.Index = IndexName.From<TDocument>();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -103,17 +103,49 @@ internal BulkOperation()
/// <param name="settings">The <see cref="IElasticsearchClientSettings"/> for the current client instance.</param>
protected abstract Task SerializeAsync(Stream stream, IElasticsearchClientSettings settings);

private IndexName? _bulkRequestIndex;

void IBulkOperation.PrepareIndex(IndexName? bulkRequestIndex)
{
Index ??= bulkRequestIndex ?? ClrType;
_bulkRequestIndex = bulkRequestIndex;
}

if (bulkRequestIndex is not null && (Index?.Equals(bulkRequestIndex) ?? false))
Index = null;
private void ResolveIndex(IElasticsearchClientSettings settings)
{
if (_bulkRequestIndex is not null)
{
var resolvedBulkIndex = settings.Inferrer.IndexName(_bulkRequestIndex);

string? inferredIndex;
if (Index is not null)
inferredIndex = settings.Inferrer.IndexName(Index);
else if (ClrType is not null)
inferredIndex = settings.Inferrer.TryIndexName(ClrType);
else
inferredIndex = null;

if (inferredIndex is null || inferredIndex == resolvedBulkIndex)
Index = null;
else
Index = inferredIndex;
}
else
{
Index ??= ClrType;
}
}

/// <inheritdoc />
void IStreamSerializable.Serialize(Stream stream, IElasticsearchClientSettings settings, SerializationFormatting formatting) => Serialize(stream, settings);
void IStreamSerializable.Serialize(Stream stream, IElasticsearchClientSettings settings, SerializationFormatting formatting)
{
ResolveIndex(settings);
Serialize(stream, settings);
}

/// <inheritdoc />
Task IStreamSerializable.SerializeAsync(Stream stream, IElasticsearchClientSettings settings, SerializationFormatting formatting) => SerializeAsync(stream, settings);
Task IStreamSerializable.SerializeAsync(Stream stream, IElasticsearchClientSettings settings, SerializationFormatting formatting)
{
ResolveIndex(settings);
return SerializeAsync(stream, settings);
}
}
Loading