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); }
public static OrderedDictionary GetPropertyDictionary <T>(this IExecutionResult executionResult, Expression <Func <T, object> > expression) { return(executionResult.GetPropertyDictionary(expression.ToPropertyName())); }