コード例 #1
0
        public static string Build <TRootObject>(Action <IGraphQueryableObject <TRootObject> > buildFcn)
        {
            var configuration = new GraphQueryableObject <TRootObject>(string.Empty);

            buildFcn(configuration);

            return(configuration.ToQueryString());
        }
コード例 #2
0
        public IGraphQueryableObject <TEntity> AddObjectAs <TProperty, TInnerProperty>(Expression <Func <TEntity, TProperty> > navigationFcn, Action <IGraphQueryableObject <TInnerProperty> > innerGraphQueryable)
        {
            var propertyName = GetPropertyNameFromExpression(navigationFcn);
            var newObject    = new GraphQueryableObject <TInnerProperty>(propertyName);

            _fields[propertyName] = newObject;

            innerGraphQueryable(newObject);

            return(this);
        }
コード例 #3
0
        private static (GraphQueryableObject <object> @object, int index) ParseObject(string queryString, int startingIndex)
        {
            var index = startingIndex;
            GraphQueryableObject <object> @object = null;

            while (index < queryString.Length)
            {
                var character = queryString[index];

                if (@object == null)
                {
                    if (character == '{')
                    {
                        @object = new GraphQueryableObject <object>(string.Empty);
                    }
                    else if (!char.IsSeparator(character))
                    {
                        throw new Exception($"Unexpected character: Found wrong character at {index}");
                    }
                }
                else
                {
                    if (character == '}')
                    {
                        return(@object, index + 1);
                    }
                    else if (character == ',')
                    {
                        var(field, newIndex) = ParseField(queryString, index + 1);

                        if (field is GraphQueryableScalar)
                        {
                            @object.AddScalar((GraphQueryableScalar)field);
                        }
                        else
                        {
                            @object.AddObject((GraphQueryableObject <object>)field);
                        }

                        index = newIndex - 1;
                    }
                    else if (char.IsLetterOrDigit(character))
                    {
                        var(field, newIndex) = ParseField(queryString, index);

                        if (field is GraphQueryableScalar)
                        {
                            @object.AddScalar((GraphQueryableScalar)field);
                        }
                        else
                        {
                            @object.AddObject((GraphQueryableObject <object>)field);
                        }

                        index = newIndex - 1;
                    }
                    else if (!char.IsSeparator(character))
                    {
                        throw new Exception($"Unexpected character: Found wrong character at {index}");
                    }
                }

                index++;
            }

            throw new Exception($"End-of-string: Cannot parse object at {startingIndex}");
        }
コード例 #4
0
        internal IGraphQueryableObject <TEntity> AddObject <TObject>(GraphQueryableObject <TObject> @object)
        {
            _fields.Add(@object.Name, @object);

            return(this);
        }