public static ConnectionResult GetConnectionResult <TQuery>(this IExecutionResult executionResult, Expression <Func <TQuery, object> > expression)
        {
            var paginatedResult = executionResult.GetPropertyDictionary(expression);

            var connectionResult = new ConnectionResult();

            if (paginatedResult.TryGetProperty("nodes", out var nodesResult))
            {
                var nodes = (List <object>)nodesResult;
                foreach (var node in nodes)
                {
                    connectionResult.Nodes.Add((OrderedDictionary)node);
                }
            }

            var pageInfo = (OrderedDictionary)paginatedResult.GetProperty("pageInfo");

            connectionResult.PageInfo = new PageInfo
            {
                HasNextPage     = (bool)pageInfo.GetProperty("hasNextPage"),
                HasPreviousPage = (bool)pageInfo.GetProperty("hasPreviousPage"),
                StartCursor     = (string)pageInfo.GetProperty("startCursor"),
                EndCursor       = (string)pageInfo.GetProperty("endCursor")
            };

            var totalCount = (int)paginatedResult.GetProperty("totalCount");

            connectionResult.TotalCount = totalCount;

            var edges = (List <object>)paginatedResult.GetProperty("edges");

            foreach (var edge in edges)
            {
                connectionResult.Edges.Add(new Edge
                {
                    Cursor = (string)((OrderedDictionary)edge).GetProperty("cursor"),
                    Node   = (OrderedDictionary)((OrderedDictionary)(edge)).GetProperty("node"),
                });
            }
            return(connectionResult);
        }
コード例 #2
0
 public static OrderedDictionary GetPropertyDictionary <T>(this IExecutionResult executionResult, Expression <Func <T, object> > expression)
 {
     return(executionResult.GetPropertyDictionary(expression.ToPropertyName()));
 }