예제 #1
0
        public override ExpressionResult VisitGqlcall(EntityGraphQLParser.GqlcallContext context)
        {
            var         fieldName  = context.method.GetText();
            var         argList    = context.gqlarguments.children.Where(c => c.GetType() == typeof(EntityGraphQLParser.GqlargContext)).Cast <EntityGraphQLParser.GqlargContext>();
            IMethodType methodType = schemaProvider.GetFieldType(currentContext, fieldName, argList.Select(a => a.gqlfield.GetText().ToLower()));
            var         args       = argList.ToDictionary(a => a.gqlfield.GetText(), a => {
                fieldArgumentContext = methodType;
                var r = VisitGqlarg(a);
                fieldArgumentContext = null;
                return(r);
            }, StringComparer.OrdinalIgnoreCase);

            if (schemaProvider.HasMutation(fieldName))
            {
                return(MakeMutationExpression(fieldName, (MutationType)methodType, args));
            }
            return(MakeFieldExpression(fieldName, args));
        }
        public override ExpressionResult VisitGqlcall(EntityGraphQLParser.GqlcallContext context)
        {
            var         fieldName  = context.method.GetText();
            var         argList    = context.gqlarguments.children.Where(c => c.GetType() == typeof(EntityGraphQLParser.GqlargContext)).Cast <EntityGraphQLParser.GqlargContext>();
            IMethodType methodType = schemaProvider.GetFieldOnContext(currentContext, fieldName, claims);
            var         args       = argList.ToDictionary(a => a.gqlfield.GetText(), a => {
                var argName = a.gqlfield.GetText();
                if (!methodType.Arguments.ContainsKey(argName))
                {
                    throw new EntityGraphQLCompilerException($"No argument '{argName}' found on field '{methodType.Name}'");
                }
                fieldArgumentContext = methodType;
                var r = VisitGqlarg(a);
                fieldArgumentContext = null;
                return(r);
            });

            if (schemaProvider.HasMutation(fieldName))
            {
                return(MakeMutationExpression((MutationType)methodType, args));
            }
            return(MakeFieldExpression(fieldName, args));
        }
예제 #3
0
 public override string VisitGqlcall(EntityGraphQLParser.GqlcallContext context)
 {
     return(context.method.GetText());
 }