Beispiel #1
0
        public override GraphQLOperation VisitGqlTypeDef(EntityGraphQLParser.GqlTypeDefContext context)
        {
            var argName  = context.gqlVar().GetText().TrimStart('$');
            var isArray  = context.arrayType != null;
            var type     = isArray ? context.arrayType.type.GetText() : context.type.GetText();
            var required = context.required != null;

            if (required && !variables.ContainsKey(argName))
            {
                throw new QueryException($"Missing required variable '{argName}' on query '{this.operation.Name}'");
            }

            this.operation.AddArgument(argName, type, isArray, required);

            return(this.operation);
        }
Beispiel #2
0
        public override GraphQLOperation VisitGqlTypeDef(EntityGraphQLParser.GqlTypeDefContext context)
        {
            var argName  = context.gqlVar().GetText().TrimStart('$');
            var isArray  = context.arrayType != null;
            var type     = isArray ? context.arrayType.type.GetText() : context.type.GetText();
            var required = context.required != null;
            CompiledQueryResult defaultValue = null;

            if (context.defaultValue != null)
            {
                defaultValue = EqlCompiler.CompileWith(context.defaultValue.GetText(), null, schemaProvider, null, variables);
            }

            if (required && !variables.ContainsKey(argName) && defaultValue == null)
            {
                throw new QueryException($"Missing required variable '{argName}' on query '{this.operation.Name}'");
            }

            this.operation.AddArgument(argName, type, isArray, required, defaultValue != null ? defaultValue.ExpressionResult : null);

            return(this.operation);
        }