public override Routing? Read()

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);
		}
	}