QueryDef.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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 QueryDef(Type type, IFilter? filter = null, IColumns? columns = null, ISortOrder? sort = null, CoreRange? range = null)
  12. {
  13. Type = type;
  14. Filter = filter;
  15. Columns = columns;
  16. SortOrder = sort;
  17. Range = range;
  18. }
  19. public Type Type { get; private set; }
  20. public IFilter? Filter { get; set; }
  21. public IColumns? Columns { get; set; }
  22. public ISortOrder? SortOrder { get; set; }
  23. public CoreRange? Range { get; set; }
  24. }
  25. public class QueryDef<T> : IQueryDef where T : Entity, IRemotable, IPersistent, new()
  26. {
  27. public QueryDef(Filter<T>? filter = null, Columns<T>? columns = null, SortOrder<T>? sortorder = null, CoreRange? range = null)
  28. {
  29. Type = typeof(T);
  30. Filter = filter;
  31. Columns = columns;
  32. SortOrder = sortorder;
  33. Range = range;
  34. }
  35. public Type Type { get; }
  36. public IFilter? Filter { get; }
  37. public IColumns? Columns { get; }
  38. public ISortOrder? SortOrder { get; }
  39. public CoreRange? Range { get; set; }
  40. }
  41. public class KeyedQueryDef : QueryDef, IKeyedQueryDef
  42. {
  43. public string Key { get; }
  44. public KeyedQueryDef(string key, Type type, IFilter? filter = null, IColumns? columns = null, ISortOrder? sortOrder = null, CoreRange? range = null) : base(type)
  45. {
  46. Key = key;
  47. Filter = filter;
  48. Columns = columns;
  49. SortOrder = sortOrder;
  50. Range = range;
  51. }
  52. }
  53. public class KeyedQueryDef<T> : QueryDef<T>, IKeyedQueryDef where T : Entity, IRemotable, IPersistent, new()
  54. {
  55. public string Key { get; }
  56. public KeyedQueryDef(
  57. string key,
  58. Filter<T>? filter = null,
  59. Columns<T>? columns = null,
  60. SortOrder<T>? sortorder = null,
  61. CoreRange? range = null)
  62. : base(filter, columns, sortorder, range)
  63. {
  64. Key = key;
  65. }
  66. public KeyedQueryDef(
  67. Filter<T>? filter = null,
  68. Columns<T>? columns = null,
  69. SortOrder<T>? sortorder = null,
  70. CoreRange? range = null): base(filter, columns, sortorder, range)
  71. {
  72. Key = typeof(T).Name;
  73. }
  74. }
  75. /*public class HeadQueryDef<T> : IQueryDef where T : Entity, new()
  76. {
  77. public HeadQueryDef(Filter<T> filter, Columns<T> columns, SortOrder<T> sortorder)
  78. {
  79. Type = typeof(T);
  80. Filter = filter;
  81. Columns = columns;
  82. SortOrder = sortorder;
  83. }
  84. public Type Type { get; set; }
  85. public object Filter { get; set; }
  86. public object Columns { get; set; }
  87. public object SortOrder { get; set; }
  88. }
  89. public interface IChildQueryDef : IQueryDef { }
  90. public class ChildQueryDef<T> : IChildQueryDef where T : Entity, new()
  91. {
  92. public ChildQueryDef(Filter<T> filter, Columns<T> columns, SortOrder<T> sortorder)
  93. {
  94. Type = typeof(T);
  95. Filter = filter;
  96. Columns = columns;
  97. SortOrder = sortorder;
  98. }
  99. public Type Type { get; set; }
  100. public object Filter { get; set; }
  101. public object Columns { get; set; }
  102. public object SortOrder { get; set; }
  103. }*/
  104. }