コード例 #1
0
        public bool ShouldIncludeNode(ExecutionContext context, Directives directives)
        {
            if (directives != null)
            {
                var directive = directives.Find(DirectiveGraphType.Skip.Name);
                if (directive != null)
                {
                    var values = GetArgumentValues(
                        context.Schema,
                        DirectiveGraphType.Skip.Arguments,
                        directive.Arguments,
                        context.Variables);
                    return(!((bool)values["if"]));
                }

                directive = directives.Find(DirectiveGraphType.Include.Name);
                if (directive != null)
                {
                    var values = GetArgumentValues(
                        context.Schema,
                        DirectiveGraphType.Include.Arguments,
                        directive.Arguments,
                        context.Variables);
                    return((bool)values["if"]);
                }
            }

            return(true);
        }
コード例 #2
0
        public override object VisitDirectives(GraphQLParser.DirectivesContext context)
        {
            var directives = new Directives();

            foreach (var dir in context.directive())
            {
                directives.Add((Directive)Visit(dir));
            }

            return(directives);
        }
コード例 #3
0
ファイル: DocumentExecuter.cs プロジェクト: iXmonvi33/graphQL
        public bool ShouldIncludeNode(ExecutionContext context, Directives directives)
        {
            if (directives != null)
            {
                var directive = directives.Find(DirectiveGraphType.Skip.Name);
                if (directive != null)
                {
                    var values = GetArgumentValues(
                        context.Schema,
                        DirectiveGraphType.Skip.Arguments,
                        directive.Arguments,
                        context.Variables);

                    object ifObj;
                    values.TryGetValue("if", out ifObj);

                    bool ifVal;
                    return(!(bool.TryParse(ifObj?.ToString() ?? string.Empty, out ifVal) && ifVal));
                }

                directive = directives.Find(DirectiveGraphType.Include.Name);
                if (directive != null)
                {
                    var values = GetArgumentValues(
                        context.Schema,
                        DirectiveGraphType.Include.Arguments,
                        directive.Arguments,
                        context.Variables);

                    object ifObj;
                    values.TryGetValue("if", out ifObj);

                    bool ifVal;
                    return(bool.TryParse(ifObj?.ToString() ?? string.Empty, out ifVal) && ifVal);
                }
            }

            return(true);
        }
コード例 #4
0
 public Operation()
 {
     OperationType = OperationType.Query;
     Directives    = new Directives();
     Variables     = new Variables();
 }
コード例 #5
0
 public FragmentDefinition()
 {
     Directives = new Directives();
 }
コード例 #6
0
 public FragmentSpread()
 {
     Directives = new Directives();
 }