protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings) { writer.WriteStartObject(); writer.WritePropertyName("_script"); writer.WriteStartObject(); if (_order.HasValue) { writer.WritePropertyName("order"); JsonSerializer.Serialize(writer, _order.Value, options); } if (_sortMode.HasValue) { writer.WritePropertyName("mode"); JsonSerializer.Serialize(writer, _sortMode.Value, options); } if (_nestedSort is not null) { writer.WritePropertyName("nested"); JsonSerializer.Serialize(writer, _nestedSort, options); } else if (_nestedSortDescriptor is not null) { writer.WritePropertyName("nested"); JsonSerializer.Serialize(writer, _nestedSortDescriptor, options); } else if (_nestedSortDescriptorAction is not null) { writer.WritePropertyName("nested"); var descriptor = new NestedSortDescriptor(); _nestedSortDescriptorAction(descriptor); JsonSerializer.Serialize(writer, descriptor, options); } if (_script is not null) { writer.WritePropertyName("script"); JsonSerializer.Serialize(writer, _script, options); } else if (_inlineScriptDescriptor is not null) { writer.WritePropertyName("script"); JsonSerializer.Serialize(writer, _inlineScriptDescriptor, options); } else if (_inlineScriptDescriptorAction is not null) { writer.WritePropertyName("script"); var descriptor = new InlineScriptDescriptor(); _inlineScriptDescriptorAction(descriptor); JsonSerializer.Serialize(writer, descriptor, options); } if (_scriptSortType.HasValue) { writer.WritePropertyName("type"); JsonSerializer.Serialize(writer, _scriptSortType.Value, options); } writer.WriteEndObject(); writer.WriteEndObject(); }
// TODO - Decide on naming. // If we have multiple descriptors with the same method name, they may conflict public ScriptSortDescriptor InlineScript(InlineScriptDescriptor descriptor) => Assign(descriptor, (a, v) => a._inlineScriptDescriptor = v);