// Inspired by FilterConventionDescriptorExtensions#BindDefaultTypes // https://github.com/ChilliCream/hotchocolate/blob/ee5813646fdfea81035c681989793514f33b5d94/src/HotChocolate/Data/src/Data/Filters/Convention/Extensions/FilterConventionDescriptorExtensions.cs#L73 public static IFilterConventionDescriptor BindDefaultTypes( this IFilterConventionDescriptor descriptor) { descriptor .BindRuntimeType <string, StringOperationFilterInputType>() .BindRuntimeType <bool, BooleanOperationFilterInputType>() .BindRuntimeType <bool?, BooleanOperationFilterInputType>() .BindComparableType <byte>("BytePropositionInput") .BindComparableType <short>("ShortPropositionInput") .BindComparableType <int>("IntPropositionInput") .BindComparableType <long>("LongPropositionInput") .BindComparableType <float>("FloatXPropositionInput") .BindComparableType <double>("FloatPropositionInput") .BindComparableType <decimal>("DecimalPropositionInput") .BindComparableType <sbyte>("SignedBytePropositionInput") .BindComparableType <ushort>("UnsignedShortPropositionInput") .BindComparableType <uint>("UnsignedIntPropositionInput") .BindComparableType <ulong>("UnsigendLongPropositionInput") .BindComparableType <Guid>("UuidPropositionInput") .BindComparableType <DateTime>("DateTimePropositionInput") .BindComparableType <DateTimeOffset>("DateTimeOffsetPropositionInput") .BindComparableType <TimeSpan>("TimeSpanPropositionInput"); // TODO Why does this not work? // descriptor // .Configure<StringOperationFilterInputType>(x => x.Name("StringPropositionInput")) // .Configure<BooleanOperationFilterInputType>(x => x.Name("BooleanPropositionInput")); return(descriptor); }
/// <summary> /// Binds common runtime types to the according <see cref="FilterInputType"/> /// </summary> /// <param name="descriptor">The descriptor where the handlers are registered</param> /// <returns>The descriptor that was passed in as a parameter</returns> /// <exception cref="ArgumentNullException"> /// Throws in case the argument <paramref name="descriptor"/> is null /// </exception> public static IFilterConventionDescriptor BindDefaultTypes( this IFilterConventionDescriptor descriptor) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } return(descriptor .BindRuntimeType <string, StringOperationFilterInputType>() .BindRuntimeType <bool, BooleanOperationFilterInputType>() .BindRuntimeType <bool?, BooleanOperationFilterInputType>() .BindComparableType <byte>() .BindComparableType <short>() .BindComparableType <int>() .BindComparableType <long>() .BindComparableType <float>() .BindComparableType <double>() .BindComparableType <decimal>() .BindComparableType <sbyte>() .BindComparableType <ushort>() .BindComparableType <uint>() .BindComparableType <ulong>() .BindComparableType <Guid>() .BindComparableType <DateTime>() .BindComparableType <DateTimeOffset>() .BindComparableType <TimeSpan>()); }
private static IFilterConventionDescriptor BindComparableType <T>( this IFilterConventionDescriptor descriptor) where T : struct { return(descriptor .BindRuntimeType <T, ComparableOperationFilterInputType <T> >() .BindRuntimeType <T?, ComparableOperationFilterInputType <T?> >()); }
protected override void Configure(IFilterConventionDescriptor descriptor) { base.Configure(descriptor); descriptor .BindRuntimeType <RocketId, StronglyTypedIdOperationFilterInputType>() .BindRuntimeType <LaunchRecordId, StronglyTypedIdOperationFilterInputType>(); }
// Inspired by FilterConventionDescriptorExtensions#FilterConventionDescriptorExtensions // https://github.com/ChilliCream/hotchocolate/blob/ee5813646fdfea81035c681989793514f33b5d94/src/HotChocolate/Data/src/Data/Filters/Convention/Extensions/FilterConventionDescriptorExtensions.cs#L102 private static IFilterConventionDescriptor BindComparableType <T>( this IFilterConventionDescriptor descriptor, string?name = null) where T : struct { descriptor .BindRuntimeType <T, ComparableOperationFilterInputType <T> >() .BindRuntimeType <T?, ComparableOperationFilterInputType <T?> >(); // TODO Why does this not work? // if (name is not null) // { // descriptor // .Configure<ComparableOperationFilterInputType<T>>(x => x.Name(name)) // .Configure<ComparableOperationFilterInputType<T?>>(x => x.Name($"Maybe{name}")); // } return(descriptor); }
protected override void Configure(IFilterConventionDescriptor descriptor) { descriptor.Operation(123).Name("example").Description("This is a example"); descriptor.Operation(DefaultOperations.Contains) .Name("_contains") .Description("This is a example"); descriptor.ArgumentName("custom"); descriptor.BindRuntimeType <Address, AddressFilterInputType>(); descriptor.Configure <StringOperationFilterInput>( x => x.Field("test").Type <StringType>()); descriptor.AddDefaults(); descriptor.Provider <CustomProvider>(); }
protected override void Configure(IFilterConventionDescriptor descriptor) { descriptor.AddDefaults(); // Use argument name `where` descriptor.ArgumentName("where"); // Allow conjunction and disjunction descriptor.AllowAnd(); descriptor.AllowOr(); // Bind custom types descriptor.BindRuntimeType <Data.GetHttpsResource, GraphQl.GetHttpsResources.GetHttpsResourceFilterType>(); descriptor.BindRuntimeType <Data.NamedMethodArgument, GraphQl.NamedMethodArgumentFilterType>(); descriptor.BindRuntimeType <Data.CalorimetricData, GraphQl.CalorimetricDataX.CalorimetricDataFilterType>(); descriptor.BindRuntimeType <Data.IData, GraphQl.DataX.DataFilterType>(); descriptor.BindRuntimeType <Data.HygrothermalData, GraphQl.HygrothermalDataX.HygrothermalDataFilterType>(); descriptor.BindRuntimeType <Data.OpticalData, GraphQl.OpticalDataX.OpticalDataFilterType>(); descriptor.BindRuntimeType <Data.PhotovoltaicData, GraphQl.PhotovoltaicDataX.PhotovoltaicDataFilterType>(); }
/// <summary> /// The fields and operations available to each type /// </summary> public static IFilterConventionDescriptor BindSpatialTypes( this IFilterConventionDescriptor descriptor) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } descriptor .BindRuntimeType <Geometry, GeometryFilterInputType>() .BindRuntimeType <Point, PointFilterInputType>() .BindRuntimeType <MultiPoint, MultiPointFilterInputType>() .BindRuntimeType <LineString, LineStringFilterInputType>() .BindRuntimeType <MultiLineString, MultiLineStringFilterInputType>() .BindRuntimeType <Polygon, PolygonFilterInputType>() .BindRuntimeType <MultiPolygon, MultiPolygonFilterInputType>(); return(descriptor); }
/// <summary> /// Binds common runtime types to the according <see cref="FilterInputType"/> that are /// supported by MongoDb /// </summary> /// <param name="descriptor">The descriptor where the handlers are registered</param> /// <returns>The descriptor that was passed in as a parameter</returns> /// <exception cref="ArgumentNullException"> /// Throws in case the argument <paramref name="descriptor"/> is null /// </exception> public static IFilterConventionDescriptor BindDefaultMongoDbTypes( this IFilterConventionDescriptor descriptor) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } descriptor .BindRuntimeType <string, StringOperationFilterInputType>() .BindRuntimeType <bool, BooleanOperationFilterInputType>() .BindRuntimeType <byte, ComparableOperationFilterInputType <byte> >() .BindRuntimeType <short, ComparableOperationFilterInputType <short> >() .BindRuntimeType <int, ComparableOperationFilterInputType <int> >() .BindRuntimeType <long, ComparableOperationFilterInputType <long> >() .BindRuntimeType <float, ComparableOperationFilterInputType <float> >() .BindRuntimeType <double, ComparableOperationFilterInputType <double> >() .BindRuntimeType <decimal, ComparableOperationFilterInputType <decimal> >() .BindRuntimeType <ObjectId, ComparableOperationFilterInputType <ObjectId> >() .BindRuntimeType <Guid, ComparableOperationFilterInputType <Guid> >() .BindRuntimeType <DateTime, ComparableOperationFilterInputType <DateTime> >() .BindRuntimeType <DateTimeOffset, ComparableOperationFilterInputType <DateTimeOffset> >() .BindRuntimeType <TimeSpan, ComparableOperationFilterInputType <TimeSpan> >() .BindRuntimeType <bool?, BooleanOperationFilterInputType>() .BindRuntimeType <byte?, ComparableOperationFilterInputType <byte?> >() .BindRuntimeType <short?, ComparableOperationFilterInputType <short?> >() .BindRuntimeType <int?, ComparableOperationFilterInputType <int?> >() .BindRuntimeType <long?, ComparableOperationFilterInputType <long?> >() .BindRuntimeType <float?, ComparableOperationFilterInputType <float?> >() .BindRuntimeType <double?, ComparableOperationFilterInputType <double?> >() .BindRuntimeType <decimal?, ComparableOperationFilterInputType <decimal?> >() .BindRuntimeType <ObjectId?, ComparableOperationFilterInputType <ObjectId?> >() .BindRuntimeType <Guid?, ComparableOperationFilterInputType <Guid?> >() .BindRuntimeType <DateTime?, ComparableOperationFilterInputType <DateTime?> >() .BindRuntimeType <DateTimeOffset?, ComparableOperationFilterInputType <DateTimeOffset?> >() .BindRuntimeType <TimeSpan?, ComparableOperationFilterInputType <TimeSpan?> >(); return(descriptor); }