Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Program | |
{ | |
public static async Task Main(string[] args) | |
{ | |
IHost? host = CreateHostBuilder(args).Build(); | |
if (args.Contains("--generate-schema")) | |
{ | |
IRequestExecutor executor = await host.Services | |
.GetRequiredService<IRequestExecutorResolver>() | |
.GetRequestExecutorAsync(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Person | |
{ | |
public string FirstName { get; } | |
public string LastName { get; } | |
} | |
[ExtendObjectType(typeof(Person))] | |
public class PersonExtension | |
{ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if (argument.Type is IFilterInputType filterInput && | |
context.Selection.Field.ContextData | |
.TryGetValue(ContextVisitFilterArgumentKey, out var executorObj) && | |
executorObj is VisitFilterArgument executor) | |
{ | |
var inMemory = IsInMemoryQuery<TEntityType>(input); | |
var visitorContext = executor(filter, filterInput, inMemory); | |
// compile expression tree |
As we develop the composite schema specification, we must decide what belongs in the core specification and what should be defined as an extension. Whatever we include in the core specification becomes mandatory for all compliant implementations. If the core spec becomes too large or complicated, it can hinder adoption-especially for teams that do not need advanced governance or collaboration features.
Consider the smallest example of a composite schema that can be resolved by an executor. Suppose we have two sub-schemas:
type Product {
OlderNewer