| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | using System;using InABox.Core;namespace InABox.Clients{    public class QueryDef : IQueryDef    {        public QueryDef(Type type)        {            Type = type;        }        public Type Type { get; private set; }        public IFilter? Filter { get; set; }        public IColumns? Columns { get; set; }        public ISortOrder? SortOrder { get; set; }    }        public class QueryDef<T> : IQueryDef where T : Entity, IRemotable, IPersistent, new()    {        public QueryDef(Filter<T>? filter = null, Columns<T>? columns = null, SortOrder<T>? sortorder = null)        {            Type = typeof(T);            Filter = filter;            Columns = columns;            SortOrder = sortorder;        }        public Type Type { get; }        public IFilter? Filter { get; }        public IColumns? Columns { get; }        public ISortOrder? SortOrder { get; }    }    public class KeyedQueryDef : QueryDef, IKeyedQueryDef    {        public string Key { get; }        public KeyedQueryDef(string key, Type type, IFilter? filter = null, IColumns? columns = null, ISortOrder? sortOrder = null) : base(type)        {            Key = key;            Filter = filter;            Columns = columns;            SortOrder = sortOrder;        }    }    public class KeyedQueryDef<T> : QueryDef<T>, IKeyedQueryDef where T : Entity, IRemotable, IPersistent, new()    {        public string Key { get; }        public KeyedQueryDef(            string key,             Filter<T>? filter = null,            Columns<T>? columns = null,            SortOrder<T>? sortorder = null): base(filter, columns, sortorder)        {            Key = key;        }        public KeyedQueryDef(            Filter<T>? filter = null,            Columns<T>? columns = null,            SortOrder<T>? sortorder = null): base(filter, columns, sortorder)        {            Key = typeof(T).Name;        }    }    /*public class HeadQueryDef<T> : IQueryDef where T : Entity, new()    {        public HeadQueryDef(Filter<T> filter, Columns<T> columns, SortOrder<T> sortorder)        {            Type = typeof(T);            Filter = filter;            Columns = columns;            SortOrder = sortorder;        }        public Type Type { get; set; }        public object Filter { get; set; }        public object Columns { get; set; }        public object SortOrder { get; set; }    }    public interface IChildQueryDef : IQueryDef { }    public class ChildQueryDef<T> : IChildQueryDef where T : Entity, new()    {        public ChildQueryDef(Filter<T> filter, Columns<T> columns, SortOrder<T> sortorder)        {            Type = typeof(T);            Filter = filter;            Columns = columns;            SortOrder = sortorder;        }        public Type Type { get; set; }        public object Filter { get; set; }        public object Columns { get; set; }        public object SortOrder { get; set; }    }*/}
 |