diff --git a/src/VirtoCommerce.Xapi.Core/Infrastructure/SchemaFactory.cs b/src/VirtoCommerce.Xapi.Core/Infrastructure/SchemaFactory.cs index 2cdbe6c..a980315 100644 --- a/src/VirtoCommerce.Xapi.Core/Infrastructure/SchemaFactory.cs +++ b/src/VirtoCommerce.Xapi.Core/Infrastructure/SchemaFactory.cs @@ -78,11 +78,20 @@ public ISchema GetSchema() schema.RegisterTypeMapping, OptionalNullableDecimalGraphType>(); schema.RegisterTypeMapping, OptionalIntGraphType>(); schema.RegisterTypeMapping, OptionalNullableIntGraphType>(); + schema.RegisterTypeMapping, OptionalBooleanGraphType>(); + schema.RegisterTypeMapping, OptionalNullableBooleanGraphType>(); // Map common value conversions to Optional ValueConverter.Register>(x => new Optional(x)); + ValueConverter.Register>(x => new Optional(x)); + ValueConverter.Register>(x => new Optional(x)); ValueConverter.Register>(x => new Optional(x)); + ValueConverter.Register>(x => new Optional(x)); + ValueConverter.Register>(x => new Optional(x)); ValueConverter.Register>(x => new Optional(x)); + ValueConverter.Register>(x => new Optional(x)); + ValueConverter.Register>(x => new Optional(x)); + ValueConverter.Register>(x => new Optional(x)); // Clean Query, Mutation and Subscription if they have no fields // to prevent GraphQL configuration errors. diff --git a/src/VirtoCommerce.Xapi.Core/Schemas/ScalarTypes/OptionalBooleanGraphType.cs b/src/VirtoCommerce.Xapi.Core/Schemas/ScalarTypes/OptionalBooleanGraphType.cs new file mode 100644 index 0000000..6fe1ca0 --- /dev/null +++ b/src/VirtoCommerce.Xapi.Core/Schemas/ScalarTypes/OptionalBooleanGraphType.cs @@ -0,0 +1,22 @@ +using GraphQL.Types; +using VirtoCommerce.Xapi.Core.Infrastructure; + +namespace VirtoCommerce.Xapi.Core.Schemas.ScalarTypes +{ + public sealed class OptionalBooleanGraphType : BooleanGraphType + { + public OptionalBooleanGraphType() + { + Name = "OptionalBoolean"; + } + + public override object ParseValue(object value) + { + var parsedValue = base.ParseValue(value); + + var result = new Optional(parsedValue); + + return result; + } + } +} diff --git a/src/VirtoCommerce.Xapi.Core/Schemas/ScalarTypes/OptionalNullableBooleanGraphType.cs b/src/VirtoCommerce.Xapi.Core/Schemas/ScalarTypes/OptionalNullableBooleanGraphType.cs new file mode 100644 index 0000000..1bc7753 --- /dev/null +++ b/src/VirtoCommerce.Xapi.Core/Schemas/ScalarTypes/OptionalNullableBooleanGraphType.cs @@ -0,0 +1,22 @@ +using GraphQL.Types; +using VirtoCommerce.Xapi.Core.Infrastructure; + +namespace VirtoCommerce.Xapi.Core.Schemas.ScalarTypes +{ + public sealed class OptionalNullableBooleanGraphType : BooleanGraphType + { + public OptionalNullableBooleanGraphType() + { + Name = "OptionalNullableBoolean"; + } + + public override object ParseValue(object value) + { + var parsedValue = base.ParseValue(value); + + var result = new Optional(parsedValue); + + return result; + } + } +}