src/Config/Converters/MultipleCreateOptionsConverter.cs (58 lines of code) (raw):

// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using System.Text.Json; using System.Text.Json.Serialization; using Azure.DataApiBuilder.Config.ObjectModel; namespace Azure.DataApiBuilder.Config.Converters { /// <summary> /// Converter for the multiple create operation options. /// </summary> internal class MultipleCreateOptionsConverter : JsonConverter<MultipleCreateOptions> { /// <inheritdoc/> public override MultipleCreateOptions? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType == JsonTokenType.Null) { return null; } if (reader.TokenType is JsonTokenType.StartObject) { MultipleCreateOptions? multipleCreateOptions = null; while (reader.Read()) { if (reader.TokenType == JsonTokenType.EndObject) { break; } string? propertyName = reader.GetString(); if (propertyName is null) { throw new JsonException("Invalid property : null"); } switch (propertyName) { case "enabled": reader.Read(); if (reader.TokenType is JsonTokenType.True || reader.TokenType is JsonTokenType.False) { multipleCreateOptions = new(reader.GetBoolean()); } break; default: throw new JsonException($"Unexpected property {propertyName}"); } } return multipleCreateOptions; } throw new JsonException("Failed to read the GraphQL Multiple Create options"); } /// <inheritdoc/> public override void Write(Utf8JsonWriter writer, MultipleCreateOptions? value, JsonSerializerOptions options) { // If the value is null, it is not written to the config file. if (value is null) { return; } writer.WritePropertyName("create"); writer.WriteStartObject(); writer.WritePropertyName("enabled"); writer.WriteBooleanValue(value.Enabled); writer.WriteEndObject(); } } }