using System; using System.Collections.Generic; using System.Linq; using System.Text; using PoweredSoft.DynamicQuery.Core; namespace PoweredSoft.DynamicQuery { /// /// Represents an aggregate result. /// public class AggregateResult : IAggregateResult { public string Path { get; set; } public AggregateType Type { get; set; } public object Value { get; set; } } // part of a result. public abstract class QueryResult : IQueryResult { public List Aggregates { get; set; } public List Data { get; set; } public bool ShouldSerializeAggregates() => Aggregates != null; } // not grouped. public class QueryExecutionResult : QueryResult, IQueryExecutionResult { public long TotalRecords { get; set; } public long? NumberOfPages { get; set; } } // grouped. public class GroupQueryResult : QueryResult, IGroupQueryResult { public string GroupPath { get; set; } public object GroupValue { get; set; } public IEnumerable GroupItems => Data.Cast(); public bool ShouldSerializeGroupItems() => false; } public class GroupedQueryExecutionResult : GroupQueryResult, IQueryExecutionResult { public long TotalRecords { get; set; } public long? NumberOfPages { get; set; } } }