QueryDef.cs 3.3 KB

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