in src/Elastic.Clients.Elasticsearch/_Shared/Core/Infer/JoinFieldRouting/RoutingConverter.cs [16:58]
public override Routing? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) =>
reader.TokenType == JsonTokenType.Number
? new Routing(reader.GetInt64())
: new Routing(reader.GetString());
public override void Write(Utf8JsonWriter writer, Routing value, JsonSerializerOptions options)
{
if (value is null)
{
writer.WriteNullValue();
return;
}
if (value.Document is not null)
{
InitializeSettings(options);
var documentId = _settings.Inferrer.Routing(value.Document.GetType(), value.Document);
if (documentId is null)
{
writer.WriteNullValue();
return;
}
writer.WriteStringValue(documentId);
}
else if (value.DocumentGetter is not null)
{
var doc = value.DocumentGetter();
InitializeSettings(options);
var documentId = _settings.Inferrer.Routing(doc.GetType(), doc);
writer.WriteStringValue(documentId);
}
else if (value.LongValue.HasValue)
{
writer.WriteNumberValue(value.LongValue.Value);
}
else
{
writer.WriteStringValue(value.StringValue);
}
}