// 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); }
public static IFilterConventionDescriptor UseDefaultOperations( this IFilterConventionDescriptor descriptor) { descriptor.Operation(Operations.Equals).Name("eq"); descriptor.Operation(Operations.NotEquals).Name("neq"); descriptor.Operation(Operations.GreaterThan).Name("gt"); descriptor.Operation(Operations.NotGreaterThan).Name("ngt"); descriptor.Operation(Operations.GreaterThanOrEquals).Name("gte"); descriptor.Operation(Operations.NotGreaterThanOrEquals).Name("ngte"); descriptor.Operation(Operations.LowerThan).Name("lt"); descriptor.Operation(Operations.NotLowerThan).Name("nlt"); descriptor.Operation(Operations.LowerThanOrEquals).Name("lte"); descriptor.Operation(Operations.NotLowerThanOrEquals).Name("nlte"); descriptor.Operation(Operations.Contains).Name("contains"); descriptor.Operation(Operations.NotContains).Name("ncontains"); descriptor.Operation(Operations.In).Name("in"); descriptor.Operation(Operations.NotIn).Name("nin"); descriptor.Operation(Operations.StartsWith).Name("startsWith"); descriptor.Operation(Operations.NotStartsWith).Name("nstartsWith"); descriptor.Operation(Operations.EndsWith).Name("endsWith"); descriptor.Operation(Operations.NotEndsWith).Name("nendsWith"); descriptor.Operation(Operations.All).Name("all"); descriptor.Operation(Operations.None).Name("none"); descriptor.Operation(Operations.Some).Name("some"); descriptor.Operation(Operations.Any).Name("any"); descriptor.Operation(Operations.And).Name("and"); descriptor.Operation(Operations.Or).Name("or"); return(descriptor); }
// Inspired by FilterConventionDescriptorExtensions#AddDefaultOperations // https://github.com/ChilliCream/hotchocolate/blob/ee5813646fdfea81035c681989793514f33b5d94/src/HotChocolate/Data/src/Data/Filters/Convention/Extensions/FilterConventionDescriptorExtensions.cs#L28 public static IFilterConventionDescriptor AddDefaultOperations( this IFilterConventionDescriptor descriptor) { descriptor.Operation(DefaultFilterOperations.Equals).Name("equalTo"); descriptor.Operation(DefaultFilterOperations.NotEquals).Name("notEqualTo"); descriptor.Operation(DefaultFilterOperations.GreaterThan).Name("greaterThan"); descriptor.Operation(DefaultFilterOperations.NotGreaterThan).Name("notGreaterThan"); descriptor.Operation(DefaultFilterOperations.GreaterThanOrEquals).Name("greaterThanOrEqualTo"); descriptor.Operation(DefaultFilterOperations.NotGreaterThanOrEquals).Name("notGreaterThanOrEqualTo"); descriptor.Operation(DefaultFilterOperations.LowerThan).Name("lessThan"); descriptor.Operation(DefaultFilterOperations.NotLowerThan).Name("lessThan"); descriptor.Operation(DefaultFilterOperations.LowerThanOrEquals).Name("notLessThanOrEqualTo"); descriptor.Operation(DefaultFilterOperations.NotLowerThanOrEquals).Name("notLessThanOrEqualTo"); descriptor.Operation(DefaultFilterOperations.Contains).Name("contains"); descriptor.Operation(DefaultFilterOperations.NotContains).Name("doesNotContain"); descriptor.Operation(DefaultFilterOperations.In).Name("in"); descriptor.Operation(DefaultFilterOperations.NotIn).Name("notIn"); descriptor.Operation(DefaultFilterOperations.StartsWith).Name("startsWith"); descriptor.Operation(DefaultFilterOperations.NotStartsWith).Name("doesNotStartWith"); descriptor.Operation(DefaultFilterOperations.EndsWith).Name("endsWith"); descriptor.Operation(DefaultFilterOperations.NotEndsWith).Name("doesNotEndWith"); descriptor.Operation(DefaultFilterOperations.All).Name("all"); descriptor.Operation(DefaultFilterOperations.None).Name("none"); descriptor.Operation(DefaultFilterOperations.Some).Name("some"); descriptor.Operation(DefaultFilterOperations.Any).Name("any"); descriptor.Operation(DefaultFilterOperations.And).Name("and"); descriptor.Operation(DefaultFilterOperations.Or).Name("or"); descriptor.Operation(DefaultFilterOperations.Data).Name("data"); descriptor.Operation(AdditionalFilterOperations.Not).Name("not"); // TODO `inClosedInterval` return(descriptor); }
protected override void Configure( IFilterConventionDescriptor descriptor) { descriptor .Types(x => x.Field <StringFieldConvention>()) .Visitor(x => x.UseSpatial()); }
/// <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>()); }
/// <summary> /// Adds default operations for Neo4j to the descriptor /// </summary> /// <param name="descriptor">The descriptor where the handlers are registered</param> /// <returns>The <paramref name="descriptor"/></returns> /// <exception cref="ArgumentNullException"> /// Throws in case the argument <paramref name="descriptor"/> is null /// </exception> public static IFilterConventionDescriptor AddDefaultNeo4JOperations( this IFilterConventionDescriptor descriptor) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } descriptor.Operation(DefaultFilterOperations.Equals).Name("eq"); descriptor.Operation(DefaultFilterOperations.NotEquals).Name("neq"); descriptor.Operation(DefaultFilterOperations.GreaterThan).Name("gt"); descriptor.Operation(DefaultFilterOperations.NotGreaterThan).Name("ngt"); descriptor.Operation(DefaultFilterOperations.GreaterThanOrEquals).Name("gte"); descriptor.Operation(DefaultFilterOperations.NotGreaterThanOrEquals).Name("ngte"); descriptor.Operation(DefaultFilterOperations.LowerThan).Name("lt"); descriptor.Operation(DefaultFilterOperations.NotLowerThan).Name("nlt"); descriptor.Operation(DefaultFilterOperations.LowerThanOrEquals).Name("lte"); descriptor.Operation(DefaultFilterOperations.NotLowerThanOrEquals).Name("nlte"); descriptor.Operation(DefaultFilterOperations.Contains).Name("contains"); descriptor.Operation(DefaultFilterOperations.NotContains).Name("ncontains"); descriptor.Operation(DefaultFilterOperations.In).Name("in"); descriptor.Operation(DefaultFilterOperations.NotIn).Name("nin"); descriptor.Operation(DefaultFilterOperations.StartsWith).Name("startsWith"); descriptor.Operation(DefaultFilterOperations.NotStartsWith).Name("nstartsWith"); descriptor.Operation(DefaultFilterOperations.EndsWith).Name("endsWith"); descriptor.Operation(DefaultFilterOperations.NotEndsWith).Name("nendsWith"); descriptor.Operation(DefaultFilterOperations.All).Name("all"); descriptor.Operation(DefaultFilterOperations.None).Name("none"); descriptor.Operation(DefaultFilterOperations.Some).Name("some"); descriptor.Operation(DefaultFilterOperations.Any).Name("any"); descriptor.Operation(DefaultFilterOperations.And).Name("and"); descriptor.Operation(DefaultFilterOperations.Or).Name("or"); return(descriptor); }
public static IFilterConventionDescriptor BindDefaultTypes( this IFilterConventionDescriptor descriptor) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } descriptor.BindRuntimeType <string, StringOperationInput>(); descriptor.BindRuntimeType <bool, BooleanOperationInput>(); descriptor.BindRuntimeType <byte, ComparableOperationInput <byte> >(); descriptor.BindRuntimeType <short, ComparableOperationInput <short> >(); descriptor.BindRuntimeType <int, ComparableOperationInput <int> >(); descriptor.BindRuntimeType <long, ComparableOperationInput <long> >(); descriptor.BindRuntimeType <float, ComparableOperationInput <float> >(); descriptor.BindRuntimeType <double, ComparableOperationInput <double> >(); descriptor.BindRuntimeType <decimal, ComparableOperationInput <decimal> >(); descriptor.BindRuntimeType <bool?, BooleanOperationInput>(); descriptor.BindRuntimeType <byte?, ComparableOperationInput <byte?> >(); descriptor.BindRuntimeType <short?, ComparableOperationInput <short?> >(); descriptor.BindRuntimeType <int?, ComparableOperationInput <int?> >(); descriptor.BindRuntimeType <long?, ComparableOperationInput <long?> >(); descriptor.BindRuntimeType <float?, ComparableOperationInput <float?> >(); descriptor.BindRuntimeType <double?, ComparableOperationInput <double?> >(); descriptor.BindRuntimeType <decimal?, ComparableOperationInput <decimal?> >(); descriptor.BindRuntimeType <Guid, ComparableOperationInput <Guid> >(); descriptor.BindRuntimeType <DateTime, ComparableOperationInput <DateTime> >(); descriptor.BindRuntimeType <DateTimeOffset, ComparableOperationInput <DateTimeOffset> >(); descriptor.BindRuntimeType <TimeSpan, ComparableOperationInput <TimeSpan> >(); return(descriptor); }
protected override void Configure(IFilterConventionDescriptor descriptor) { base.Configure(descriptor); descriptor .BindRuntimeType <RocketId, StronglyTypedIdOperationFilterInputType>() .BindRuntimeType <LaunchRecordId, StronglyTypedIdOperationFilterInputType>(); }
public static IFilterConventionDescriptor UseImplicitFilters( this IFilterConventionDescriptor descriptor) => descriptor .AddImplicitFilter(TryCreateStringFilter) .AddImplicitFilter(TryCreateBooleanFilter) .AddImplicitFilter(TryCreateComparableFilter) .AddImplicitFilter(TryCreateArrayFilter) .AddImplicitFilter(TryCreateObjectFilter);
public static IFilterExpressionVisitorDescriptor UseExpressionVisitor( this IFilterConventionDescriptor descriptor) { var desc = FilterExpressionVisitorDescriptor.New(descriptor); descriptor.Visitor(desc); return(desc); }
private static IFilterConventionDescriptor BindComparableType <T>( this IFilterConventionDescriptor descriptor) where T : struct { return(descriptor .BindRuntimeType <T, ComparableOperationFilterInputType <T> >() .BindRuntimeType <T?, ComparableOperationFilterInputType <T?> >()); }
public static IFilterConventionDescriptor UseMock( this IFilterConventionDescriptor descriptor) { return(descriptor.AddDefaults().Provider( new QueryableFilterProvider(x => x .AddDefaultFieldHandlers() .AddFieldHandler <MatchAnyQueryableFieldHandler>()))); }
protected override void Configure( IFilterConventionDescriptor descriptor) { descriptor .OfType <Comparable>() .OfType <DateTime>() .Types(x => x.Field <StringFieldConvention>().UseSnakeCase()) .Visitor <FilterDefinition <BsonDocument> >(x => x.UseSpatial()); }
public static IFilterConventionDescriptor AddInvariantComparison( this IFilterConventionDescriptor conventionDescriptor) { return(conventionDescriptor .Configure <StringOperationFilterInputType>(x => x.Operation(CustomOperations.Like) .Name("like") )); }
protected override void Configure(IFilterConventionDescriptor descriptor) { base.Configure(descriptor); descriptor.ArgumentName("test") .ElementName("TESTelement") .TypeName( (IDescriptorContext context, Type entityType) => context.Naming.GetTypeName(entityType, TypeKind.Object) + "FilterTest"); }
protected override void Configure(IFilterConventionDescriptor descriptor) { descriptor.AddDefaults(); descriptor.AddProviderExtension(new QueryableFilterProviderExtension(x => x .AddFieldHandler <NotEqualsHandler>() .AddFieldHandler <NotContainsHandler>() .AddFieldHandler <StartsWithHandler>() .AddFieldHandler <NotStartsWithHandler>() .AddFieldHandler <EndsWithHandler>() .AddFieldHandler <NotEndsWithHandler>() .AddFieldHandler <EqualsHandler>() .AddFieldHandler <ContainsHandler>())); }
public static IFilterConventionDescriptor UseDefault( this IFilterConventionDescriptor descriptor) => descriptor.ArgumentName("where") .ElementName("element") .TypeName(FilterTypeName) .Description(FilterTypeDescription) .Type(FilterKind.Array) .Operation(FilterOperationKind.ArrayAll).And() .Operation(FilterOperationKind.ArrayAny).And() .Operation(FilterOperationKind.ArraySome).And() .Operation(FilterOperationKind.ArrayNone).And() .And() .Type(FilterKind.Boolean) .Operation(FilterOperationKind.Equals).And() .Operation(FilterOperationKind.NotEquals).And() .And() .Type(FilterKind.Comparable) .Operation(FilterOperationKind.Equals).And() .Operation(FilterOperationKind.NotEquals).And() .Operation(FilterOperationKind.In).And() .Operation(FilterOperationKind.NotIn).And() .Operation(FilterOperationKind.GreaterThan).And() .Operation(FilterOperationKind.NotGreaterThan).And() .Operation(FilterOperationKind.GreaterThanOrEquals).And() .Operation(FilterOperationKind.NotGreaterThanOrEquals).And() .Operation(FilterOperationKind.LowerThan).And() .Operation(FilterOperationKind.NotLowerThan).And() .Operation(FilterOperationKind.LowerThanOrEquals).And() .Operation(FilterOperationKind.NotLowerThanOrEquals).And() .And() .Type(FilterKind.Object) .Operation(FilterOperationKind.Object).And() .And() .Type(FilterKind.String) .Operation(FilterOperationKind.Equals).And() .Operation(FilterOperationKind.NotEquals).And() .Operation(FilterOperationKind.Contains).And() .Operation(FilterOperationKind.NotContains).And() .Operation(FilterOperationKind.StartsWith).And() .Operation(FilterOperationKind.NotStartsWith).And() .Operation(FilterOperationKind.EndsWith).And() .Operation(FilterOperationKind.NotEndsWith).And() .Operation(FilterOperationKind.In).And() .Operation(FilterOperationKind.NotIn).And() .And() .UseSnakeCase() .UseImplicitFilters() .UseExpressionVisitor() .UseDefault() .And();
protected override void Configure(IFilterConventionDescriptor descriptor) { descriptor.AddDefaults(); descriptor.Provider( new QueryableFilterProvider(x => x .AddDefaultFieldHandlers() .AddFieldHandler <QueryableStringInvariantContainsHandler>())); descriptor .Configure <StringOperationFilterInputType>(_ => _ .Operation(DefaultFilterOperations.Contains) .Type <StringType>() .Extend() .OnBeforeCreate(p => p.Handler = new QueryableStringInvariantContainsHandler())); }
/// <summary> /// Adds the spatial filter defaults /// </summary> public static IFilterConventionDescriptor AddSpatialDefaults( this IFilterConventionDescriptor descriptor) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } descriptor.AddSpatialOperations(); descriptor.BindSpatialTypes(); descriptor.AddProviderExtension( new QueryableFilterProviderExtension(p => p.AddSpatialHandlers())); return(descriptor); }
// 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.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>(); }
public static IFilterConventionDescriptor UseDefaultFields( this IFilterConventionDescriptor descriptor) { descriptor.Binding <string, StringOperationInput>(); descriptor.Binding <bool, BooleanOperationInput>(); descriptor.Binding <byte, ComparableOperationInput <byte> >(); descriptor.Binding <short, ComparableOperationInput <short> >(); descriptor.Binding <int, ComparableOperationInput <int> >(); descriptor.Binding <long, ComparableOperationInput <long> >(); descriptor.Binding <float, ComparableOperationInput <float> >(); descriptor.Binding <double, ComparableOperationInput <double> >(); descriptor.Binding <decimal, ComparableOperationInput <decimal> >(); descriptor.Binding <Guid, ComparableOperationInput <Guid> >(); descriptor.Binding <DateTime, ComparableOperationInput <DateTime> >(); descriptor.Binding <DateTimeOffset, ComparableOperationInput <DateTimeOffset> >(); descriptor.Binding <TimeSpan, ComparableOperationInput <TimeSpan> >(); 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>(); }
/// <summary> /// The default names of the spatial filter operations /// </summary> public static IFilterConventionDescriptor AddSpatialOperations( this IFilterConventionDescriptor descriptor) { if (descriptor is null) { throw new ArgumentNullException(nameof(descriptor)); } descriptor.Operation(SpatialFilterOperations.Contains).Name("contains"); descriptor.Operation(SpatialFilterOperations.Distance).Name("distance"); descriptor.Operation(SpatialFilterOperations.Intersects).Name("intersects"); descriptor.Operation(SpatialFilterOperations.Overlaps).Name("overlaps"); descriptor.Operation(SpatialFilterOperations.Touches).Name("touches"); descriptor.Operation(SpatialFilterOperations.Within).Name("within"); descriptor.Operation(SpatialFilterOperations.Buffer).Name("buffer"); descriptor.Operation(SpatialFilterOperations.Geometry).Name("geometry"); return(descriptor); }
/// <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); }
protected override void Configure(IFilterConventionDescriptor descriptor) { descriptor.AddDefaults(); //descriptor.AddInvariantComparison(); descriptor .Configure <StringOperationFilterInputType>( x => x .Operation(CustomOperations.Like) .Type <StringType>() ); descriptor .Operation(CustomOperations.Like).Name("like"); descriptor.AddProviderExtension( new QueryableFilterProviderExtension( x => x .AddFieldHandler <QueryableStringInvariantLikeHandler>())); }
protected FilterExpressionVisitorDescriptor( IFilterConventionDescriptor convention) { _convention = convention; }
protected override void Configure(IFilterConventionDescriptor descriptor) { descriptor.Operation(DefaultOperations.Equals).Name("eq"); }
protected virtual void Configure(IFilterConventionDescriptor descriptor) { }
public static IFilterConventionDescriptor AddDefaults( this IFilterConventionDescriptor descriptor) => descriptor.AddDefaultOperations().BindDefaultTypes().UseQueryableProvider();