diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/ApiUrlsLookup.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/ApiUrlsLookup.g.cs index cb98d993862..cf7b44ab38a 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/ApiUrlsLookup.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/ApiUrlsLookup.g.cs @@ -80,6 +80,7 @@ internal static class ApiUrlsLookups internal static ApiUrls IndexManagementSimulateIndexTemplate = new ApiUrls(new[] { "/_index_template/_simulate_index/{name}" }); internal static ApiUrls IndexManagementSimulateTemplate = new ApiUrls(new[] { "/_index_template/_simulate", "/_index_template/_simulate/{name}" }); internal static ApiUrls IndexManagementSplit = new ApiUrls(new[] { "/{index}/_split/{target}" }); + internal static ApiUrls IndexManagementUpdateAliases = new ApiUrls(new[] { "/_aliases" }); internal static ApiUrls NoNamespaceIndex = new ApiUrls(new[] { "/{index}/_doc/{id}", "/{index}/_doc" }); internal static ApiUrls NoNamespaceInfo = new ApiUrls(new[] { "/" }); internal static ApiUrls NoNamespaceMget = new ApiUrls(new[] { "/_mget", "/{index}/_mget" }); diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/UpdateAliasesRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/UpdateAliasesRequest.g.cs new file mode 100644 index 00000000000..667cd8f233a --- /dev/null +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/UpdateAliasesRequest.g.cs @@ -0,0 +1,240 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. +// +// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗ +// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝ +// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗ +// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝ +// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗ +// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝ +// ------------------------------------------------ +// +// This file is automatically generated. +// Please do not edit these files manually. +// +// ------------------------------------------------ + +using Elastic.Clients.Elasticsearch.Fluent; +using Elastic.Clients.Elasticsearch.Requests; +using Elastic.Clients.Elasticsearch.Serialization; +using Elastic.Transport; +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Text.Json; +using System.Text.Json.Serialization; + +#nullable restore +namespace Elastic.Clients.Elasticsearch.IndexManagement; +public sealed class UpdateAliasesRequestParameters : RequestParameters +{ + [JsonIgnore] + public Elastic.Clients.Elasticsearch.Duration? MasterTimeout { get => Q("master_timeout"); set => Q("master_timeout", value); } + + [JsonIgnore] + public Elastic.Clients.Elasticsearch.Duration? Timeout { get => Q("timeout"); set => Q("timeout", value); } +} + +public sealed partial class UpdateAliasesRequest : PlainRequest +{ + internal override ApiUrls ApiUrls => ApiUrlsLookups.IndexManagementUpdateAliases; + protected override HttpMethod StaticHttpMethod => HttpMethod.POST; + internal override bool SupportsBody => true; + [JsonIgnore] + public Elastic.Clients.Elasticsearch.Duration? MasterTimeout { get => Q("master_timeout"); set => Q("master_timeout", value); } + + [JsonIgnore] + public Elastic.Clients.Elasticsearch.Duration? Timeout { get => Q("timeout"); set => Q("timeout", value); } + + [JsonInclude, JsonPropertyName("actions")] + public ICollection? Actions { get; set; } +} + +public sealed partial class UpdateAliasesRequestDescriptor : RequestDescriptor, UpdateAliasesRequestParameters> +{ + internal UpdateAliasesRequestDescriptor(Action> configure) => configure.Invoke(this); + public UpdateAliasesRequestDescriptor() + { + } + + internal override ApiUrls ApiUrls => ApiUrlsLookups.IndexManagementUpdateAliases; + protected override HttpMethod StaticHttpMethod => HttpMethod.POST; + internal override bool SupportsBody => true; + public UpdateAliasesRequestDescriptor MasterTimeout(Elastic.Clients.Elasticsearch.Duration? masterTimeout) => Qs("master_timeout", masterTimeout); + public UpdateAliasesRequestDescriptor Timeout(Elastic.Clients.Elasticsearch.Duration? timeout) => Qs("timeout", timeout); + private ICollection? ActionsValue { get; set; } + + private ActionDescriptor ActionsDescriptor { get; set; } + + private Action ActionsDescriptorAction { get; set; } + + private Action[] ActionsDescriptorActions { get; set; } + + public UpdateAliasesRequestDescriptor Actions(ICollection? actions) + { + ActionsDescriptor = null; + ActionsDescriptorAction = null; + ActionsDescriptorActions = null; + ActionsValue = actions; + return Self; + } + + public UpdateAliasesRequestDescriptor Actions(ActionDescriptor descriptor) + { + ActionsValue = null; + ActionsDescriptorAction = null; + ActionsDescriptorActions = null; + ActionsDescriptor = descriptor; + return Self; + } + + public UpdateAliasesRequestDescriptor Actions(Action configure) + { + ActionsValue = null; + ActionsDescriptor = null; + ActionsDescriptorActions = null; + ActionsDescriptorAction = configure; + return Self; + } + + public UpdateAliasesRequestDescriptor Actions(params Action[] configure) + { + ActionsValue = null; + ActionsDescriptor = null; + ActionsDescriptorAction = null; + ActionsDescriptorActions = configure; + return Self; + } + + protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings) + { + writer.WriteStartObject(); + if (ActionsDescriptor is not null) + { + writer.WritePropertyName("actions"); + writer.WriteStartArray(); + JsonSerializer.Serialize(writer, ActionsDescriptor, options); + writer.WriteEndArray(); + } + else if (ActionsDescriptorAction is not null) + { + writer.WritePropertyName("actions"); + writer.WriteStartArray(); + JsonSerializer.Serialize(writer, new ActionDescriptor(ActionsDescriptorAction), options); + writer.WriteEndArray(); + } + else if (ActionsDescriptorActions is not null) + { + writer.WritePropertyName("actions"); + writer.WriteStartArray(); + foreach (var action in ActionsDescriptorActions) + { + JsonSerializer.Serialize(writer, new ActionDescriptor(action), options); + } + + writer.WriteEndArray(); + } + else if (ActionsValue is not null) + { + writer.WritePropertyName("actions"); + JsonSerializer.Serialize(writer, ActionsValue, options); + } + + writer.WriteEndObject(); + } +} + +public sealed partial class UpdateAliasesRequestDescriptor : RequestDescriptor +{ + internal UpdateAliasesRequestDescriptor(Action configure) => configure.Invoke(this); + public UpdateAliasesRequestDescriptor() + { + } + + internal override ApiUrls ApiUrls => ApiUrlsLookups.IndexManagementUpdateAliases; + protected override HttpMethod StaticHttpMethod => HttpMethod.POST; + internal override bool SupportsBody => true; + public UpdateAliasesRequestDescriptor MasterTimeout(Elastic.Clients.Elasticsearch.Duration? masterTimeout) => Qs("master_timeout", masterTimeout); + public UpdateAliasesRequestDescriptor Timeout(Elastic.Clients.Elasticsearch.Duration? timeout) => Qs("timeout", timeout); + private ICollection? ActionsValue { get; set; } + + private ActionDescriptor ActionsDescriptor { get; set; } + + private Action ActionsDescriptorAction { get; set; } + + private Action[] ActionsDescriptorActions { get; set; } + + public UpdateAliasesRequestDescriptor Actions(ICollection? actions) + { + ActionsDescriptor = null; + ActionsDescriptorAction = null; + ActionsDescriptorActions = null; + ActionsValue = actions; + return Self; + } + + public UpdateAliasesRequestDescriptor Actions(ActionDescriptor descriptor) + { + ActionsValue = null; + ActionsDescriptorAction = null; + ActionsDescriptorActions = null; + ActionsDescriptor = descriptor; + return Self; + } + + public UpdateAliasesRequestDescriptor Actions(Action configure) + { + ActionsValue = null; + ActionsDescriptor = null; + ActionsDescriptorActions = null; + ActionsDescriptorAction = configure; + return Self; + } + + public UpdateAliasesRequestDescriptor Actions(params Action[] configure) + { + ActionsValue = null; + ActionsDescriptor = null; + ActionsDescriptorAction = null; + ActionsDescriptorActions = configure; + return Self; + } + + protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings) + { + writer.WriteStartObject(); + if (ActionsDescriptor is not null) + { + writer.WritePropertyName("actions"); + writer.WriteStartArray(); + JsonSerializer.Serialize(writer, ActionsDescriptor, options); + writer.WriteEndArray(); + } + else if (ActionsDescriptorAction is not null) + { + writer.WritePropertyName("actions"); + writer.WriteStartArray(); + JsonSerializer.Serialize(writer, new ActionDescriptor(ActionsDescriptorAction), options); + writer.WriteEndArray(); + } + else if (ActionsDescriptorActions is not null) + { + writer.WritePropertyName("actions"); + writer.WriteStartArray(); + foreach (var action in ActionsDescriptorActions) + { + JsonSerializer.Serialize(writer, new ActionDescriptor(action), options); + } + + writer.WriteEndArray(); + } + else if (ActionsValue is not null) + { + writer.WritePropertyName("actions"); + JsonSerializer.Serialize(writer, ActionsValue, options); + } + + writer.WriteEndObject(); + } +} \ No newline at end of file diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/UpdateAliasesResponse.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/UpdateAliasesResponse.g.cs new file mode 100644 index 00000000000..38dedd43705 --- /dev/null +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexManagement/UpdateAliasesResponse.g.cs @@ -0,0 +1,30 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. +// +// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗ +// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝ +// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗ +// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝ +// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗ +// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝ +// ------------------------------------------------ +// +// This file is automatically generated. +// Please do not edit these files manually. +// +// ------------------------------------------------ + +using Elastic.Clients.Elasticsearch.Fluent; +using Elastic.Clients.Elasticsearch.Serialization; +using Elastic.Transport.Products.Elasticsearch; +using System.Collections.Generic; +using System.Text.Json.Serialization; + +#nullable restore +namespace Elastic.Clients.Elasticsearch.IndexManagement; +public sealed partial class UpdateAliasesResponse : ElasticsearchResponse +{ + [JsonInclude, JsonPropertyName("acknowledged")] + public bool Acknowledged { get; init; } +} \ No newline at end of file diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Indices.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Indices.g.cs index 92380563127..3ba96c1d265 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Indices.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Client/ElasticsearchClient.Indices.g.cs @@ -1975,4 +1975,62 @@ public virtual Task SplitAsync(Elastic.Clients.El descriptor.BeforeRequest(); return DoRequestAsync, SplitIndexResponse, SplitIndexRequestParameters>(descriptor); } + + public virtual UpdateAliasesResponse UpdateAliases(UpdateAliasesRequest request) + { + request.BeforeRequest(); + return DoRequest(request); + } + + public virtual Task UpdateAliasesAsync(UpdateAliasesRequest request, CancellationToken cancellationToken = default) + { + request.BeforeRequest(); + return DoRequestAsync(request, cancellationToken); + } + + public virtual UpdateAliasesResponse UpdateAliases() + { + var descriptor = new UpdateAliasesRequestDescriptor(); + descriptor.BeforeRequest(); + return DoRequest(descriptor); + } + + public virtual UpdateAliasesResponse UpdateAliases(Action configureRequest) + { + var descriptor = new UpdateAliasesRequestDescriptor(); + configureRequest?.Invoke(descriptor); + descriptor.BeforeRequest(); + return DoRequest(descriptor); + } + + public virtual UpdateAliasesResponse UpdateAliases(Action> configureRequest) + { + var descriptor = new UpdateAliasesRequestDescriptor(); + configureRequest?.Invoke(descriptor); + descriptor.BeforeRequest(); + return DoRequest, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor); + } + + public virtual Task UpdateAliasesAsync(CancellationToken cancellationToken = default) + { + var descriptor = new UpdateAliasesRequestDescriptor(); + descriptor.BeforeRequest(); + return DoRequestAsync(descriptor); + } + + public virtual Task UpdateAliasesAsync(Action configureRequest, CancellationToken cancellationToken = default) + { + var descriptor = new UpdateAliasesRequestDescriptor(); + configureRequest?.Invoke(descriptor); + descriptor.BeforeRequest(); + return DoRequestAsync(descriptor); + } + + public virtual Task UpdateAliasesAsync(Action> configureRequest, CancellationToken cancellationToken = default) + { + var descriptor = new UpdateAliasesRequestDescriptor(); + configureRequest?.Invoke(descriptor); + descriptor.BeforeRequest(); + return DoRequestAsync, UpdateAliasesResponse, UpdateAliasesRequestParameters>(descriptor); + } } \ No newline at end of file diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/Action.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/Action.g.cs new file mode 100644 index 00000000000..11c341ac29b --- /dev/null +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/Action.g.cs @@ -0,0 +1,237 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. +// +// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗ +// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝ +// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗ +// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝ +// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗ +// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝ +// ------------------------------------------------ +// +// This file is automatically generated. +// Please do not edit these files manually. +// +// ------------------------------------------------ + +using Elastic.Clients.Elasticsearch.Fluent; +using Elastic.Clients.Elasticsearch.Serialization; +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Text.Json; +using System.Text.Json.Serialization; + +#nullable restore +namespace Elastic.Clients.Elasticsearch.IndexManagement; +[JsonConverter(typeof(ActionConverter))] +public sealed partial class Action +{ + internal Action(string variantName, object variant) + { + if (variantName is null) + throw new ArgumentNullException(nameof(variantName)); + if (variant is null) + throw new ArgumentNullException(nameof(variant)); + if (string.IsNullOrWhiteSpace(variantName)) + throw new ArgumentException("Variant name must not be empty or whitespace."); + VariantName = variantName; + Variant = variant; + } + + internal object Variant { get; } + + internal string VariantName { get; } + + public static Action Add(Elastic.Clients.Elasticsearch.IndexManagement.AddAction addAction) => new Action("add", addAction); + public static Action Remove(Elastic.Clients.Elasticsearch.IndexManagement.RemoveAction removeAction) => new Action("remove", removeAction); + public static Action RemoveIndex(Elastic.Clients.Elasticsearch.IndexManagement.RemoveIndexAction removeIndexAction) => new Action("remove_index", removeIndexAction); +} + +internal sealed partial class ActionConverter : JsonConverter +{ + public override Action Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (reader.TokenType != JsonTokenType.StartObject) + { + throw new JsonException("Expected start token."); + } + + reader.Read(); + if (reader.TokenType != JsonTokenType.PropertyName) + { + throw new JsonException("Expected a property name token representing the variant held within this container."); + } + + var propertyName = reader.GetString(); + reader.Read(); + if (propertyName == "add") + { + var variant = JsonSerializer.Deserialize(ref reader, options); + reader.Read(); + return new Action(propertyName, variant); + } + + if (propertyName == "remove") + { + var variant = JsonSerializer.Deserialize(ref reader, options); + reader.Read(); + return new Action(propertyName, variant); + } + + if (propertyName == "remove_index") + { + var variant = JsonSerializer.Deserialize(ref reader, options); + reader.Read(); + return new Action(propertyName, variant); + } + + throw new JsonException(); + } + + public override void Write(Utf8JsonWriter writer, Action value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + writer.WritePropertyName(value.VariantName); + switch (value.VariantName) + { + case "add": + JsonSerializer.Serialize(writer, (Elastic.Clients.Elasticsearch.IndexManagement.AddAction)value.Variant, options); + break; + case "remove": + JsonSerializer.Serialize(writer, (Elastic.Clients.Elasticsearch.IndexManagement.RemoveAction)value.Variant, options); + break; + case "remove_index": + JsonSerializer.Serialize(writer, (Elastic.Clients.Elasticsearch.IndexManagement.RemoveIndexAction)value.Variant, options); + break; + } + + writer.WriteEndObject(); + } +} + +public sealed partial class ActionDescriptor : SerializableDescriptor> +{ + internal ActionDescriptor(Action> configure) => configure.Invoke(this); + public ActionDescriptor() : base() + { + } + + private bool ContainsVariant { get; set; } + + private string ContainedVariantName { get; set; } + + private object Variant { get; set; } + + private Descriptor Descriptor { get; set; } + + private ActionDescriptor Set(Action descriptorAction, string variantName) + where T : Descriptor + { + ContainedVariantName = variantName; + ContainsVariant = true; + var descriptor = (T)Activator.CreateInstance(typeof(T), true); + descriptorAction?.Invoke(descriptor); + Descriptor = descriptor; + return Self; + } + + private ActionDescriptor Set(object variant, string variantName) + { + Variant = variant; + ContainedVariantName = variantName; + ContainsVariant = true; + return Self; + } + + public ActionDescriptor Add(AddAction addAction) => Set(addAction, "add"); + public ActionDescriptor Add(Action> configure) => Set(configure, "add"); + public ActionDescriptor Remove(RemoveAction removeAction) => Set(removeAction, "remove"); + public ActionDescriptor Remove(Action configure) => Set(configure, "remove"); + public ActionDescriptor RemoveIndex(RemoveIndexAction removeIndexAction) => Set(removeIndexAction, "remove_index"); + public ActionDescriptor RemoveIndex(Action configure) => Set(configure, "remove_index"); + protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings) + { + if (!ContainsVariant) + { + writer.WriteNullValue(); + return; + } + + writer.WriteStartObject(); + writer.WritePropertyName(ContainedVariantName); + if (Variant is not null) + { + JsonSerializer.Serialize(writer, Variant, Variant.GetType(), options); + writer.WriteEndObject(); + return; + } + + JsonSerializer.Serialize(writer, Descriptor, Descriptor.GetType(), options); + writer.WriteEndObject(); + } +} + +public sealed partial class ActionDescriptor : SerializableDescriptor +{ + internal ActionDescriptor(Action configure) => configure.Invoke(this); + public ActionDescriptor() : base() + { + } + + private bool ContainsVariant { get; set; } + + private string ContainedVariantName { get; set; } + + private object Variant { get; set; } + + private Descriptor Descriptor { get; set; } + + private ActionDescriptor Set(Action descriptorAction, string variantName) + where T : Descriptor + { + ContainedVariantName = variantName; + ContainsVariant = true; + var descriptor = (T)Activator.CreateInstance(typeof(T), true); + descriptorAction?.Invoke(descriptor); + Descriptor = descriptor; + return Self; + } + + private ActionDescriptor Set(object variant, string variantName) + { + Variant = variant; + ContainedVariantName = variantName; + ContainsVariant = true; + return Self; + } + + public ActionDescriptor Add(AddAction addAction) => Set(addAction, "add"); + public ActionDescriptor Add(Action configure) => Set(configure, "add"); + public ActionDescriptor Add(Action> configure) => Set(configure, "add"); + public ActionDescriptor Remove(RemoveAction removeAction) => Set(removeAction, "remove"); + public ActionDescriptor Remove(Action configure) => Set(configure, "remove"); + public ActionDescriptor RemoveIndex(RemoveIndexAction removeIndexAction) => Set(removeIndexAction, "remove_index"); + public ActionDescriptor RemoveIndex(Action configure) => Set(configure, "remove_index"); + protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings) + { + if (!ContainsVariant) + { + writer.WriteNullValue(); + return; + } + + writer.WriteStartObject(); + writer.WritePropertyName(ContainedVariantName); + if (Variant is not null) + { + JsonSerializer.Serialize(writer, Variant, Variant.GetType(), options); + writer.WriteEndObject(); + return; + } + + JsonSerializer.Serialize(writer, Descriptor, Descriptor.GetType(), options); + writer.WriteEndObject(); + } +} \ No newline at end of file diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/AddAction.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/AddAction.g.cs new file mode 100644 index 00000000000..d7cf5d4de0a --- /dev/null +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/AddAction.g.cs @@ -0,0 +1,464 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. +// +// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗ +// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝ +// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗ +// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝ +// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗ +// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝ +// ------------------------------------------------ +// +// This file is automatically generated. +// Please do not edit these files manually. +// +// ------------------------------------------------ + +using Elastic.Clients.Elasticsearch.Fluent; +using Elastic.Clients.Elasticsearch.Serialization; +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Text.Json; +using System.Text.Json.Serialization; + +#nullable restore +namespace Elastic.Clients.Elasticsearch.IndexManagement; +public sealed partial class AddAction +{ + [JsonInclude, JsonPropertyName("alias")] + public Elastic.Clients.Elasticsearch.IndexAlias? Alias { get; set; } + + [JsonInclude, JsonPropertyName("aliases"), SingleOrManyCollectionConverter(typeof(Elastic.Clients.Elasticsearch.IndexAlias))] + public ICollection? Aliases { get; set; } + + [JsonInclude, JsonPropertyName("filter")] + public Elastic.Clients.Elasticsearch.QueryDsl.Query? Filter { get; set; } + + [JsonInclude, JsonPropertyName("index")] + public Elastic.Clients.Elasticsearch.IndexName? Index { get; set; } + + [JsonInclude, JsonPropertyName("index_routing")] + public Elastic.Clients.Elasticsearch.Routing? IndexRouting { get; set; } + + [JsonInclude, JsonPropertyName("indices")] + public Elastic.Clients.Elasticsearch.Indices? Indices { get; set; } + + [JsonInclude, JsonPropertyName("is_hidden")] + public bool? IsHidden { get; set; } + + [JsonInclude, JsonPropertyName("is_write_index")] + public bool? IsWriteIndex { get; set; } + + [JsonInclude, JsonPropertyName("must_exist")] + public bool? MustExist { get; set; } + + [JsonInclude, JsonPropertyName("routing")] + public Elastic.Clients.Elasticsearch.Routing? Routing { get; set; } + + [JsonInclude, JsonPropertyName("search_routing")] + public Elastic.Clients.Elasticsearch.Routing? SearchRouting { get; set; } + + public static implicit operator Action(AddAction addAction) => IndexManagement.Action.Add(addAction); +} + +public sealed partial class AddActionDescriptor : SerializableDescriptor> +{ + internal AddActionDescriptor(Action> configure) => configure.Invoke(this); + public AddActionDescriptor() : base() + { + } + + private Elastic.Clients.Elasticsearch.QueryDsl.Query? FilterValue { get; set; } + + private QueryDsl.QueryDescriptor FilterDescriptor { get; set; } + + private Action> FilterDescriptorAction { get; set; } + + private Elastic.Clients.Elasticsearch.IndexAlias? AliasValue { get; set; } + + private ICollection? AliasesValue { get; set; } + + private Elastic.Clients.Elasticsearch.IndexName? IndexValue { get; set; } + + private Elastic.Clients.Elasticsearch.Routing? IndexRoutingValue { get; set; } + + private Elastic.Clients.Elasticsearch.Indices? IndicesValue { get; set; } + + private bool? IsHiddenValue { get; set; } + + private bool? IsWriteIndexValue { get; set; } + + private bool? MustExistValue { get; set; } + + private Elastic.Clients.Elasticsearch.Routing? RoutingValue { get; set; } + + private Elastic.Clients.Elasticsearch.Routing? SearchRoutingValue { get; set; } + + public AddActionDescriptor Filter(Elastic.Clients.Elasticsearch.QueryDsl.Query? filter) + { + FilterDescriptor = null; + FilterDescriptorAction = null; + FilterValue = filter; + return Self; + } + + public AddActionDescriptor Filter(QueryDsl.QueryDescriptor descriptor) + { + FilterValue = null; + FilterDescriptorAction = null; + FilterDescriptor = descriptor; + return Self; + } + + public AddActionDescriptor Filter(Action> configure) + { + FilterValue = null; + FilterDescriptor = null; + FilterDescriptorAction = configure; + return Self; + } + + public AddActionDescriptor Alias(Elastic.Clients.Elasticsearch.IndexAlias? alias) + { + AliasValue = alias; + return Self; + } + + public AddActionDescriptor Aliases(ICollection? aliases) + { + AliasesValue = aliases; + return Self; + } + + public AddActionDescriptor Index(Elastic.Clients.Elasticsearch.IndexName? index) + { + IndexValue = index; + return Self; + } + + public AddActionDescriptor IndexRouting(Elastic.Clients.Elasticsearch.Routing? indexRouting) + { + IndexRoutingValue = indexRouting; + return Self; + } + + public AddActionDescriptor Indices(Elastic.Clients.Elasticsearch.Indices? indices) + { + IndicesValue = indices; + return Self; + } + + public AddActionDescriptor IsHidden(bool? isHidden = true) + { + IsHiddenValue = isHidden; + return Self; + } + + public AddActionDescriptor IsWriteIndex(bool? isWriteIndex = true) + { + IsWriteIndexValue = isWriteIndex; + return Self; + } + + public AddActionDescriptor MustExist(bool? mustExist = true) + { + MustExistValue = mustExist; + return Self; + } + + public AddActionDescriptor Routing(Elastic.Clients.Elasticsearch.Routing? routing) + { + RoutingValue = routing; + return Self; + } + + public AddActionDescriptor SearchRouting(Elastic.Clients.Elasticsearch.Routing? searchRouting) + { + SearchRoutingValue = searchRouting; + return Self; + } + + protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings) + { + writer.WriteStartObject(); + if (FilterDescriptor is not null) + { + writer.WritePropertyName("filter"); + JsonSerializer.Serialize(writer, FilterDescriptor, options); + } + else if (FilterDescriptorAction is not null) + { + writer.WritePropertyName("filter"); + JsonSerializer.Serialize(writer, new QueryDsl.QueryDescriptor(FilterDescriptorAction), options); + } + else if (FilterValue is not null) + { + writer.WritePropertyName("filter"); + JsonSerializer.Serialize(writer, FilterValue, options); + } + + if (AliasValue is not null) + { + writer.WritePropertyName("alias"); + JsonSerializer.Serialize(writer, AliasValue, options); + } + + if (AliasesValue is not null) + { + writer.WritePropertyName("aliases"); + SingleOrManySerializationHelper.Serialize(AliasesValue, writer, options); + } + + if (IndexValue is not null) + { + writer.WritePropertyName("index"); + JsonSerializer.Serialize(writer, IndexValue, options); + } + + if (IndexRoutingValue is not null) + { + writer.WritePropertyName("index_routing"); + JsonSerializer.Serialize(writer, IndexRoutingValue, options); + } + + if (IndicesValue is not null) + { + writer.WritePropertyName("indices"); + JsonSerializer.Serialize(writer, IndicesValue, options); + } + + if (IsHiddenValue.HasValue) + { + writer.WritePropertyName("is_hidden"); + writer.WriteBooleanValue(IsHiddenValue.Value); + } + + if (IsWriteIndexValue.HasValue) + { + writer.WritePropertyName("is_write_index"); + writer.WriteBooleanValue(IsWriteIndexValue.Value); + } + + if (MustExistValue.HasValue) + { + writer.WritePropertyName("must_exist"); + writer.WriteBooleanValue(MustExistValue.Value); + } + + if (RoutingValue is not null) + { + writer.WritePropertyName("routing"); + JsonSerializer.Serialize(writer, RoutingValue, options); + } + + if (SearchRoutingValue is not null) + { + writer.WritePropertyName("search_routing"); + JsonSerializer.Serialize(writer, SearchRoutingValue, options); + } + + writer.WriteEndObject(); + } +} + +public sealed partial class AddActionDescriptor : SerializableDescriptor +{ + internal AddActionDescriptor(Action configure) => configure.Invoke(this); + public AddActionDescriptor() : base() + { + } + + private Elastic.Clients.Elasticsearch.QueryDsl.Query? FilterValue { get; set; } + + private QueryDsl.QueryDescriptor FilterDescriptor { get; set; } + + private Action FilterDescriptorAction { get; set; } + + private Elastic.Clients.Elasticsearch.IndexAlias? AliasValue { get; set; } + + private ICollection? AliasesValue { get; set; } + + private Elastic.Clients.Elasticsearch.IndexName? IndexValue { get; set; } + + private Elastic.Clients.Elasticsearch.Routing? IndexRoutingValue { get; set; } + + private Elastic.Clients.Elasticsearch.Indices? IndicesValue { get; set; } + + private bool? IsHiddenValue { get; set; } + + private bool? IsWriteIndexValue { get; set; } + + private bool? MustExistValue { get; set; } + + private Elastic.Clients.Elasticsearch.Routing? RoutingValue { get; set; } + + private Elastic.Clients.Elasticsearch.Routing? SearchRoutingValue { get; set; } + + public AddActionDescriptor Filter(Elastic.Clients.Elasticsearch.QueryDsl.Query? filter) + { + FilterDescriptor = null; + FilterDescriptorAction = null; + FilterValue = filter; + return Self; + } + + public AddActionDescriptor Filter(QueryDsl.QueryDescriptor descriptor) + { + FilterValue = null; + FilterDescriptorAction = null; + FilterDescriptor = descriptor; + return Self; + } + + public AddActionDescriptor Filter(Action configure) + { + FilterValue = null; + FilterDescriptor = null; + FilterDescriptorAction = configure; + return Self; + } + + public AddActionDescriptor Alias(Elastic.Clients.Elasticsearch.IndexAlias? alias) + { + AliasValue = alias; + return Self; + } + + public AddActionDescriptor Aliases(ICollection? aliases) + { + AliasesValue = aliases; + return Self; + } + + public AddActionDescriptor Index(Elastic.Clients.Elasticsearch.IndexName? index) + { + IndexValue = index; + return Self; + } + + public AddActionDescriptor IndexRouting(Elastic.Clients.Elasticsearch.Routing? indexRouting) + { + IndexRoutingValue = indexRouting; + return Self; + } + + public AddActionDescriptor Indices(Elastic.Clients.Elasticsearch.Indices? indices) + { + IndicesValue = indices; + return Self; + } + + public AddActionDescriptor IsHidden(bool? isHidden = true) + { + IsHiddenValue = isHidden; + return Self; + } + + public AddActionDescriptor IsWriteIndex(bool? isWriteIndex = true) + { + IsWriteIndexValue = isWriteIndex; + return Self; + } + + public AddActionDescriptor MustExist(bool? mustExist = true) + { + MustExistValue = mustExist; + return Self; + } + + public AddActionDescriptor Routing(Elastic.Clients.Elasticsearch.Routing? routing) + { + RoutingValue = routing; + return Self; + } + + public AddActionDescriptor SearchRouting(Elastic.Clients.Elasticsearch.Routing? searchRouting) + { + SearchRoutingValue = searchRouting; + return Self; + } + + protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings) + { + writer.WriteStartObject(); + if (FilterDescriptor is not null) + { + writer.WritePropertyName("filter"); + JsonSerializer.Serialize(writer, FilterDescriptor, options); + } + else if (FilterDescriptorAction is not null) + { + writer.WritePropertyName("filter"); + JsonSerializer.Serialize(writer, new QueryDsl.QueryDescriptor(FilterDescriptorAction), options); + } + else if (FilterValue is not null) + { + writer.WritePropertyName("filter"); + JsonSerializer.Serialize(writer, FilterValue, options); + } + + if (AliasValue is not null) + { + writer.WritePropertyName("alias"); + JsonSerializer.Serialize(writer, AliasValue, options); + } + + if (AliasesValue is not null) + { + writer.WritePropertyName("aliases"); + SingleOrManySerializationHelper.Serialize(AliasesValue, writer, options); + } + + if (IndexValue is not null) + { + writer.WritePropertyName("index"); + JsonSerializer.Serialize(writer, IndexValue, options); + } + + if (IndexRoutingValue is not null) + { + writer.WritePropertyName("index_routing"); + JsonSerializer.Serialize(writer, IndexRoutingValue, options); + } + + if (IndicesValue is not null) + { + writer.WritePropertyName("indices"); + JsonSerializer.Serialize(writer, IndicesValue, options); + } + + if (IsHiddenValue.HasValue) + { + writer.WritePropertyName("is_hidden"); + writer.WriteBooleanValue(IsHiddenValue.Value); + } + + if (IsWriteIndexValue.HasValue) + { + writer.WritePropertyName("is_write_index"); + writer.WriteBooleanValue(IsWriteIndexValue.Value); + } + + if (MustExistValue.HasValue) + { + writer.WritePropertyName("must_exist"); + writer.WriteBooleanValue(MustExistValue.Value); + } + + if (RoutingValue is not null) + { + writer.WritePropertyName("routing"); + JsonSerializer.Serialize(writer, RoutingValue, options); + } + + if (SearchRoutingValue is not null) + { + writer.WritePropertyName("search_routing"); + JsonSerializer.Serialize(writer, SearchRoutingValue, options); + } + + writer.WriteEndObject(); + } +} \ No newline at end of file diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/RemoveAction.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/RemoveAction.g.cs new file mode 100644 index 00000000000..64ac53f485e --- /dev/null +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/RemoveAction.g.cs @@ -0,0 +1,130 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. +// +// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗ +// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝ +// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗ +// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝ +// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗ +// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝ +// ------------------------------------------------ +// +// This file is automatically generated. +// Please do not edit these files manually. +// +// ------------------------------------------------ + +using Elastic.Clients.Elasticsearch.Fluent; +using Elastic.Clients.Elasticsearch.Serialization; +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Text.Json; +using System.Text.Json.Serialization; + +#nullable restore +namespace Elastic.Clients.Elasticsearch.IndexManagement; +public sealed partial class RemoveAction +{ + [JsonInclude, JsonPropertyName("alias")] + public Elastic.Clients.Elasticsearch.IndexAlias? Alias { get; set; } + + [JsonInclude, JsonPropertyName("aliases"), SingleOrManyCollectionConverter(typeof(Elastic.Clients.Elasticsearch.IndexAlias))] + public ICollection? Aliases { get; set; } + + [JsonInclude, JsonPropertyName("index")] + public Elastic.Clients.Elasticsearch.IndexName? Index { get; set; } + + [JsonInclude, JsonPropertyName("indices")] + public Elastic.Clients.Elasticsearch.Indices? Indices { get; set; } + + [JsonInclude, JsonPropertyName("must_exist")] + public bool? MustExist { get; set; } + + public static implicit operator Action(RemoveAction removeAction) => IndexManagement.Action.Remove(removeAction); +} + +public sealed partial class RemoveActionDescriptor : SerializableDescriptor +{ + internal RemoveActionDescriptor(Action configure) => configure.Invoke(this); + public RemoveActionDescriptor() : base() + { + } + + private Elastic.Clients.Elasticsearch.IndexAlias? AliasValue { get; set; } + + private ICollection? AliasesValue { get; set; } + + private Elastic.Clients.Elasticsearch.IndexName? IndexValue { get; set; } + + private Elastic.Clients.Elasticsearch.Indices? IndicesValue { get; set; } + + private bool? MustExistValue { get; set; } + + public RemoveActionDescriptor Alias(Elastic.Clients.Elasticsearch.IndexAlias? alias) + { + AliasValue = alias; + return Self; + } + + public RemoveActionDescriptor Aliases(ICollection? aliases) + { + AliasesValue = aliases; + return Self; + } + + public RemoveActionDescriptor Index(Elastic.Clients.Elasticsearch.IndexName? index) + { + IndexValue = index; + return Self; + } + + public RemoveActionDescriptor Indices(Elastic.Clients.Elasticsearch.Indices? indices) + { + IndicesValue = indices; + return Self; + } + + public RemoveActionDescriptor MustExist(bool? mustExist = true) + { + MustExistValue = mustExist; + return Self; + } + + protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings) + { + writer.WriteStartObject(); + if (AliasValue is not null) + { + writer.WritePropertyName("alias"); + JsonSerializer.Serialize(writer, AliasValue, options); + } + + if (AliasesValue is not null) + { + writer.WritePropertyName("aliases"); + SingleOrManySerializationHelper.Serialize(AliasesValue, writer, options); + } + + if (IndexValue is not null) + { + writer.WritePropertyName("index"); + JsonSerializer.Serialize(writer, IndexValue, options); + } + + if (IndicesValue is not null) + { + writer.WritePropertyName("indices"); + JsonSerializer.Serialize(writer, IndicesValue, options); + } + + if (MustExistValue.HasValue) + { + writer.WritePropertyName("must_exist"); + writer.WriteBooleanValue(MustExistValue.Value); + } + + writer.WriteEndObject(); + } +} \ No newline at end of file diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/RemoveIndexAction.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/RemoveIndexAction.g.cs new file mode 100644 index 00000000000..71effc73fd3 --- /dev/null +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/RemoveIndexAction.g.cs @@ -0,0 +1,96 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. +// +// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗ +// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝ +// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗ +// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝ +// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗ +// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝ +// ------------------------------------------------ +// +// This file is automatically generated. +// Please do not edit these files manually. +// +// ------------------------------------------------ + +using Elastic.Clients.Elasticsearch.Fluent; +using Elastic.Clients.Elasticsearch.Serialization; +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Text.Json; +using System.Text.Json.Serialization; + +#nullable restore +namespace Elastic.Clients.Elasticsearch.IndexManagement; +public sealed partial class RemoveIndexAction +{ + [JsonInclude, JsonPropertyName("index")] + public Elastic.Clients.Elasticsearch.IndexName? Index { get; set; } + + [JsonInclude, JsonPropertyName("indices")] + public Elastic.Clients.Elasticsearch.Indices? Indices { get; set; } + + [JsonInclude, JsonPropertyName("must_exist")] + public bool? MustExist { get; set; } + + public static implicit operator Action(RemoveIndexAction removeIndexAction) => IndexManagement.Action.RemoveIndex(removeIndexAction); +} + +public sealed partial class RemoveIndexActionDescriptor : SerializableDescriptor +{ + internal RemoveIndexActionDescriptor(Action configure) => configure.Invoke(this); + public RemoveIndexActionDescriptor() : base() + { + } + + private Elastic.Clients.Elasticsearch.IndexName? IndexValue { get; set; } + + private Elastic.Clients.Elasticsearch.Indices? IndicesValue { get; set; } + + private bool? MustExistValue { get; set; } + + public RemoveIndexActionDescriptor Index(Elastic.Clients.Elasticsearch.IndexName? index) + { + IndexValue = index; + return Self; + } + + public RemoveIndexActionDescriptor Indices(Elastic.Clients.Elasticsearch.Indices? indices) + { + IndicesValue = indices; + return Self; + } + + public RemoveIndexActionDescriptor MustExist(bool? mustExist = true) + { + MustExistValue = mustExist; + return Self; + } + + protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings) + { + writer.WriteStartObject(); + if (IndexValue is not null) + { + writer.WritePropertyName("index"); + JsonSerializer.Serialize(writer, IndexValue, options); + } + + if (IndicesValue is not null) + { + writer.WritePropertyName("indices"); + JsonSerializer.Serialize(writer, IndicesValue, options); + } + + if (MustExistValue.HasValue) + { + writer.WritePropertyName("must_exist"); + writer.WriteBooleanValue(MustExistValue.Value); + } + + writer.WriteEndObject(); + } +} \ No newline at end of file diff --git a/tests/Tests/IndexManagement/AliasManagement/UpdateAliasesRequestSerializationTests.cs b/tests/Tests/IndexManagement/AliasManagement/UpdateAliasesRequestSerializationTests.cs new file mode 100644 index 00000000000..96b803d53a0 --- /dev/null +++ b/tests/Tests/IndexManagement/AliasManagement/UpdateAliasesRequestSerializationTests.cs @@ -0,0 +1,39 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. + +using System.Threading.Tasks; +using Elastic.Clients.Elasticsearch.IndexManagement; +using Tests.Serialization; +using VerifyXunit; + +namespace Tests.IndexManagement.AliasManagement; + +[UsesVerify] +public class UpdateAliasesRequestSerializationTests : SerializerTestBase +{ + [U] + public async Task UpdateAliasesRequest_SerializesCorrectly() + { + var descriptor = new UpdateAliasesRequestDescriptor() + .Actions( + a => a.Add(a => a.Index("index-02").Alias("test-alias")), + a => a.Remove(a => a.Index("index-01").Alias("test-alias"))); + + var json = await SerializeAndGetJsonStringAsync(descriptor); + + await Verifier.VerifyJson(json); + + var createRequest = new UpdateAliasesRequest() + { + Actions = new Action[] + { + Action.Add(new () { Index = "index-02", Alias = "test-alias" }), + Action.Remove(new () { Index = "index-01", Alias = "test-alias" }) + } + }; + + var objectJson = await SerializeAndGetJsonStringAsync(createRequest); + objectJson.Should().Be(json); + } +} diff --git a/tests/Tests/_VerifySnapshots/UpdateAliasesRequestSerializationTests.UpdateAliasesRequest_SerializesCorrectly.verified.txt b/tests/Tests/_VerifySnapshots/UpdateAliasesRequestSerializationTests.UpdateAliasesRequest_SerializesCorrectly.verified.txt new file mode 100644 index 00000000000..3b90b24c05e --- /dev/null +++ b/tests/Tests/_VerifySnapshots/UpdateAliasesRequestSerializationTests.UpdateAliasesRequest_SerializesCorrectly.verified.txt @@ -0,0 +1,16 @@ +{ + actions: [ + { + add: { + alias: test-alias, + index: index-02 + } + }, + { + remove: { + alias: test-alias, + index: index-01 + } + } + ] +} \ No newline at end of file