Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MyDataGraphType.cs
- public class MyDataGraphType : InterfaceType<MyData>
- {
- protected override void Configure(IInterfaceTypeDescriptor<MyData> descriptor)
- {
- descriptor.Name("MyData");
- descriptor.Field(f => f.Id).Type<NonNullType<IdType>>();
- descriptor.Field(f => f.Name).Type<StringType>();
- }
- }
- // FooType.cs
- public class FooType : ObjectType<Foo>
- {
- protected override void Configure(IObjectTypeDescriptor<Foo> descriptor)
- {
- descriptor.Interface<MyDataGraphType>();
- descriptor.Field(f => f.FooTime).Type<DateTimeType>();
- }
- }
- // BarType.cs
- public class BarType : ObjectType<Bar>
- {
- protected override void Configure(IObjectTypeDescriptor<Bar> descriptor)
- {
- descriptor.Interface<MyDataGraphType>();
- }
- }
- // Query.cs
- public class Query
- {
- private readonly IMyDataProvider provider;
- public Query(IMyDataProvider provider)
- {
- this.provider = provider ?? throw new ArgumentNullException(nameof(provider));
- }
- public IEnumerable<MyData> ReadAllData(MyDataType dataType)
- {
- return this.provider.ReadAllData(dataType);
- }
- }
- // QueryType.cs
- public class QueryType : ObjectType<Query>
- {
- protected override void Configure(IObjectTypeDescriptor<Query> descriptor)
- {
- descriptor.Field(f => f.ReadAllData(default))
- .Type<ListType<MyData>>()
- .Argument("dataType", a => a.DefaultValue(MyDataType.None));
- }
- }
- // Startup.cs
- services.AddTransient<IMyDataProvider, DummyDataProvider>();
- services.AddGraphQL(sp => SchemaBuilder.New()
- .AddServices(sp)
- .AddQueryType<QueryType>()
- .AddType<FooType>()
- .Create());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement