public override void OnBeforeCompleteName(
            ITypeCompletionContext completionContext,
            DefinitionBase?definition,
            IDictionary <string, object?> contextData)
        {
            if (definition is FilterInputTypeDefinition def)
            {
                IFilterConvention convention = GetConvention(
                    completionContext.DescriptorContext,
                    def.Scope);

                var descriptor = FilterInputTypeDescriptor.New(
                    completionContext.DescriptorContext,
                    def.EntityType,
                    def.Scope);

                SchemaTypeReference typeReference = TypeReference.Create(
                    completionContext.Type,
                    def.Scope);

                convention.ApplyConfigurations(typeReference, descriptor);

                DataTypeExtensionHelper.MergeFilterInputTypeDefinitions(
                    completionContext,
                    descriptor.CreateDefinition(),
                    def);

                if (def.Scope is not null)
                {
                    definition.Name = completionContext.Scope +
                                      "_" +
                                      definition.Name;
                }
            }
        }
        public override void OnBeforeRegisterDependencies(
            ITypeDiscoveryContext discoveryContext,
            DefinitionBase?definition,
            IDictionary <string, object?> contextData)
        {
            if (definition is FilterInputTypeDefinition def)
            {
                IFilterConvention convention = GetConvention(
                    discoveryContext.DescriptorContext,
                    def.Scope);

                SchemaTypeReference typeReference = TypeReference.Create(
                    discoveryContext.Type,
                    def.Scope);

                var descriptor = FilterInputTypeDescriptor.New(
                    discoveryContext.DescriptorContext,
                    def.EntityType,
                    def.Scope);

                convention.ApplyConfigurations(typeReference, descriptor);

                FilterInputTypeDefinition extensionDefinition = descriptor.CreateDefinition();

                discoveryContext.RegisterDependencies(extensionDefinition);
            }
        }
Beispiel #3
0
        public override void OnBeforeRegisterDependencies(
            ITypeDiscoveryContext discoveryContext,
            DefinitionBase?definition,
            IDictionary <string, object?> contextData)
        {
            if (definition is FilterInputTypeDefinition def)
            {
                IFilterConvention convention = GetConvention(
                    discoveryContext.DescriptorContext,
                    def.Scope);

                var descriptor = FilterInputTypeDescriptor.From(
                    discoveryContext.DescriptorContext,
                    def,
                    def.Scope);

                var typeReference = TypeReference.Create(
                    discoveryContext.Type,
                    def.Scope);

                convention.ApplyConfigurations(typeReference, descriptor);

                foreach (InputFieldDefinition field in def.Fields)
                {
                    if (field is FilterFieldDefinition filterFieldDefinition)
                    {
                        if (discoveryContext.TryPredictTypeKind(
                                filterFieldDefinition.Type,
                                out TypeKind kind) &&
                            kind != TypeKind.Scalar && kind != TypeKind.Enum)
                        {
                            field.Type = field.Type.With(scope: discoveryContext.Scope);
                        }

                        if (filterFieldDefinition.Handler is null)
                        {
                            if (convention.TryGetHandler(
                                    discoveryContext,
                                    def,
                                    filterFieldDefinition,
                                    out IFilterFieldHandler? handler))
                            {
                                filterFieldDefinition.Handler = handler;
                            }
                            else
                            {
                                throw ThrowHelper.FilterInterceptor_NoHandlerFoundForField(
                                          def,
                                          filterFieldDefinition);
                            }
                        }
                    }
                }
            }
        }
Beispiel #4
0
        protected override InputObjectTypeDefinition CreateDefinition(
            ITypeDiscoveryContext context)
        {
            var descriptor = FilterInputTypeDescriptor.FromSchemaType(
                context.DescriptorContext,
                context.Scope,
                GetType());

            _configure(descriptor);
            return(descriptor.CreateDefinition());
        }
        protected override InputObjectTypeDefinition CreateDefinition(
            ITypeDiscoveryContext context)
        {
            var descriptor = FilterInputTypeDescriptor <T> .New(
                context.DescriptorContext,
                context.Scope,
                typeof(T));

            _configure(descriptor);
            return(descriptor.CreateDefinition());
        }
Beispiel #6
0
 /// <inheritdoc />
 public IFilterConventionDescriptor Configure <TFilterType, TRuntimeType>(
     ConfigureFilterInputType <TRuntimeType> configure)
     where TFilterType : FilterInputType <TRuntimeType> =>
 Configure(
     Context.TypeInspector.GetTypeRef(typeof(TFilterType), TypeContext.Input, Definition.Scope),
     d =>
 {
     configure.Invoke(FilterInputTypeDescriptor.From <TRuntimeType>(
                          (FilterInputTypeDescriptor)d,
                          Definition.Scope));
 });
 public static FilterInputTypeDescriptor <T> From <T>(
     FilterInputTypeDescriptor descriptor,
     string?scope = null) =>
 From <T>(descriptor.Context, descriptor.Definition, scope);