Skip to content

Commit

Permalink
Add spatial extensions to builder (#2566)
Browse files Browse the repository at this point in the history
Co-authored-by: Michael Staib <michael@chillicream.com>
  • Loading branch information
PascalSenn and michaelstaib committed Nov 16, 2020
1 parent b2877e3 commit be49faa
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 26 deletions.
Expand Up @@ -2,14 +2,14 @@

namespace HotChocolate.Data.Filters.Expressions
{
public class QueryableFilterProviderExtensions
public class QueryableFilterProviderExtension
: FilterProviderExtensions<QueryableFilterContext>
{
public QueryableFilterProviderExtensions()
public QueryableFilterProviderExtension()
{
}

public QueryableFilterProviderExtensions(
public QueryableFilterProviderExtension(
Action<IFilterProviderDescriptor<QueryableFilterContext>> configure)
: base(configure)
{
Expand Down
Expand Up @@ -418,7 +418,7 @@ public void FilterProvider_Throws_Exception_When_NotInitializedByConvention()
return builder.Create();
}

public class MockFilterProviderExtensionConvention : QueryableFilterProviderExtensions
public class MockFilterProviderExtensionConvention : QueryableFilterProviderExtension
{
protected override void Configure(
IFilterProviderDescriptor<QueryableFilterContext> descriptor)
Expand Down
@@ -1,10 +1,30 @@
using System;
using HotChocolate.Data.Filters.Expressions;
using NetTopologySuite.Geometries;

namespace HotChocolate.Data.Filters.Spatial
{
public static class SpatialFilterConventionDescriptorExtensions
{
/// <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;
}

/// <summary>
/// The default names of the spatial filter operations
/// </summary>
Expand Down
@@ -0,0 +1,22 @@
using System;
using HotChocolate.Data.Filters;
using HotChocolate.Data.Filters.Spatial;
using HotChocolate.Execution.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace HotChocolate
{
public static class SpatialFilteringRequestExecutorBuilderExtensions
{
public static IRequestExecutorBuilder AddSpatialFiltering(
this IRequestExecutorBuilder builder)
{
if (builder is null)
{
throw new ArgumentNullException(nameof(builder));
}

return builder.ConfigureSchema(x => x.AddSpatialFiltering());
}
}
}
@@ -0,0 +1,20 @@
using System;
using HotChocolate.Data.Filters;
using HotChocolate.Data.Filters.Spatial;

namespace HotChocolate
{
public static class SpatialFilteringSchemaBuilderExtensions
{
public static ISchemaBuilder AddSpatialFiltering(this ISchemaBuilder builder)
{
if (builder is null)
{
throw new ArgumentNullException(nameof(builder));
}

return builder.AddConvention<IFilterConvention>(
new FilterConventionExtension(x => x.AddSpatialDefaults()));
}
}
}
Expand Up @@ -49,16 +49,11 @@ public FilterVisitorTestBase(PostgreSqlResource<PostgisConfig> resource)
Func<IResolverContext, IEnumerable<TEntity>> resolver =
await BuildResolverAsync(entities);

ISchemaBuilder builder = SchemaBuilder.New()
return await new ServiceCollection()
.AddGraphQL()
.AddFiltering()
.AddSpatialTypes()
.AddFiltering(
x => x
.AddDefaults()
.AddSpatialOperations()
.BindSpatialTypes()
.Provider(
new QueryableFilterProvider(
p => p.AddSpatialHandlers().AddDefaultFieldHandlers())))
.AddSpatialFiltering()
.AddQueryType(
c => c
.Name("Query")
Expand All @@ -82,14 +77,7 @@ public FilterVisitorTestBase(PostgreSqlResource<PostgisConfig> resource)
}
}
})
.UseFiltering<T>());

ISchema schema = builder.Create();
return new ServiceCollection()
.Configure<RequestExecutorSetup>(
Schema.DefaultName,
o => o.Schema = schema)
.AddGraphQL()
.UseFiltering<T>())
.UseRequest(
next => async context =>
{
Expand All @@ -105,11 +93,7 @@ public FilterVisitorTestBase(PostgreSqlResource<PostgisConfig> resource)
}
})
.UseDefaultPipeline()
.Services
.BuildServiceProvider()
.GetRequiredService<IRequestExecutorResolver>()
.GetRequestExecutorAsync()
.Result;
.BuildRequestExecutorAsync();
}
}
}

0 comments on commit be49faa

Please sign in to comment.