/// <summary>
        /// Builds the collected data and generates the query as a string.
        /// </summary>
        /// <param name="formatting">None: One line, Indented: Human-readable.</param>
        /// <returns>The query as a string.</returns>
        public string Build(GraphQLFormatting formatting = GraphQLFormatting.None)
        {
            if (_root == null)
            {
                return(ChildBuild(formatting));
            }

            return(_root.Build(formatting));
        }
Exemple #2
0
        internal string Build(int nesting = 0, GraphQLFormatting formatting = GraphQLFormatting.None)
        {
            var newLine = " ";

            if (formatting == GraphQLFormatting.Indented)
            {
                newLine = Environment.NewLine;
            }

            return($"{string.Join(newLine, _fields.Select(f => f.Build(nesting, formatting)))}");
        }
        internal string ChildBuild(GraphQLFormatting formatting)
        {
            var newLine = " ";
            var nesting = string.Empty;

            if (formatting == GraphQLFormatting.Indented)
            {
                newLine = Environment.NewLine;
                nesting = "".PadLeft(_nesting * 4);
            }

            var builtArguments = _arguments.Empty ? string.Empty : $"({_arguments.Build()})";
            var fields         = _select.Build(_nesting + 1, formatting);
            var children       = string.Join(newLine, _children.Select(q => q.ChildBuild(formatting)));

            return
                ($@"{nesting}{_objectToQuery}{builtArguments} {{{newLine}{fields}{(string.IsNullOrEmpty(fields) ? "" : newLine)}{children}{(string.IsNullOrEmpty(children) ? "" : newLine)}{nesting}}}");
        }
        internal string Build(int nesting, GraphQLFormatting formatting)
        {
            var spaces  = string.Empty;
            var child   = string.Empty;
            var newLine = " ";

            if (formatting == GraphQLFormatting.Indented)
            {
                spaces  = spaces.PadLeft(nesting * 4);
                newLine = Environment.NewLine;
            }

            if (!_child.Empty)
            {
                child = $" {{{newLine}{_child.Build(nesting + 1, formatting)}{newLine}{spaces}}}";
            }

            return($"{spaces}{_name}{child}");
        }