QueryDef.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using System;
  2. using InABox.Core;
  3. namespace InABox.Clients
  4. {
  5. public class QueryDef : IQueryDef
  6. {
  7. public QueryDef(Type type)
  8. {
  9. Type = type;
  10. }
  11. public Type Type { get; private set; }
  12. public IFilter? Filter { get; set; }
  13. public IColumns? Columns { get; set; }
  14. public ISortOrder? SortOrder { get; set; }
  15. }
  16. public class QueryDef<T> : IQueryDef where T : Entity, IRemotable, IPersistent, new()
  17. {
  18. public QueryDef(Filter<T>? filter = null, Columns<T>? columns = null, SortOrder<T>? sortorder = null)
  19. {
  20. Type = typeof(T);
  21. Filter = filter;
  22. Columns = columns;
  23. SortOrder = sortorder;
  24. }
  25. public Type Type { get; }
  26. public IFilter? Filter { get; }
  27. public IColumns? Columns { get; }
  28. public ISortOrder? SortOrder { get; }
  29. }
  30. public class KeyedQueryDef<T> : QueryDef<T>, IKeyedQueryDef where T : Entity, IRemotable, IPersistent, new()
  31. {
  32. public string Key { get; }
  33. public KeyedQueryDef(
  34. string key,
  35. Filter<T>? filter = null,
  36. Columns<T>? columns = null,
  37. SortOrder<T>? sortorder = null): base(filter, columns, sortorder)
  38. {
  39. Key = key;
  40. }
  41. public KeyedQueryDef(
  42. Filter<T>? filter = null,
  43. Columns<T>? columns = null,
  44. SortOrder<T>? sortorder = null): base(filter, columns, sortorder)
  45. {
  46. Key = typeof(T).Name;
  47. }
  48. }
  49. /*public class HeadQueryDef<T> : IQueryDef where T : Entity, new()
  50. {
  51. public HeadQueryDef(Filter<T> filter, Columns<T> columns, SortOrder<T> sortorder)
  52. {
  53. Type = typeof(T);
  54. Filter = filter;
  55. Columns = columns;
  56. SortOrder = sortorder;
  57. }
  58. public Type Type { get; set; }
  59. public object Filter { get; set; }
  60. public object Columns { get; set; }
  61. public object SortOrder { get; set; }
  62. }
  63. public interface IChildQueryDef : IQueryDef { }
  64. public class ChildQueryDef<T> : IChildQueryDef where T : Entity, new()
  65. {
  66. public ChildQueryDef(Filter<T> filter, Columns<T> columns, SortOrder<T> sortorder)
  67. {
  68. Type = typeof(T);
  69. Filter = filter;
  70. Columns = columns;
  71. SortOrder = sortorder;
  72. }
  73. public Type Type { get; set; }
  74. public object Filter { get; set; }
  75. public object Columns { get; set; }
  76. public object SortOrder { get; set; }
  77. }*/
  78. }