QueryDef.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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 : QueryDef, IKeyedQueryDef
  31. {
  32. public string Key { get; }
  33. public KeyedQueryDef(string key, Type type, IFilter? filter = null, IColumns? columns = null, ISortOrder? sortOrder = null) : base(type)
  34. {
  35. Key = key;
  36. Filter = filter;
  37. Columns = columns;
  38. SortOrder = sortOrder;
  39. }
  40. }
  41. public class KeyedQueryDef<T> : QueryDef<T>, IKeyedQueryDef where T : Entity, IRemotable, IPersistent, new()
  42. {
  43. public string Key { get; }
  44. public KeyedQueryDef(
  45. string key,
  46. Filter<T>? filter = null,
  47. Columns<T>? columns = null,
  48. SortOrder<T>? sortorder = null): base(filter, columns, sortorder)
  49. {
  50. Key = key;
  51. }
  52. public KeyedQueryDef(
  53. Filter<T>? filter = null,
  54. Columns<T>? columns = null,
  55. SortOrder<T>? sortorder = null): base(filter, columns, sortorder)
  56. {
  57. Key = typeof(T).Name;
  58. }
  59. }
  60. /*public class HeadQueryDef<T> : IQueryDef where T : Entity, new()
  61. {
  62. public HeadQueryDef(Filter<T> filter, Columns<T> columns, SortOrder<T> sortorder)
  63. {
  64. Type = typeof(T);
  65. Filter = filter;
  66. Columns = columns;
  67. SortOrder = sortorder;
  68. }
  69. public Type Type { get; set; }
  70. public object Filter { get; set; }
  71. public object Columns { get; set; }
  72. public object SortOrder { get; set; }
  73. }
  74. public interface IChildQueryDef : IQueryDef { }
  75. public class ChildQueryDef<T> : IChildQueryDef where T : Entity, new()
  76. {
  77. public ChildQueryDef(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. }