RpcQueryDefinition.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System;
  2. using InABox.Core;
  3. namespace InABox.Rpc
  4. {
  5. public class RpcQueryDefinition : ISerializeBinary
  6. {
  7. public string Key { get; set; }
  8. public Type Type { get; set; }
  9. public IFilter? Filter { get; set; }
  10. public IColumns? Columns { get; set; }
  11. public ISortOrder? Sort { get; set; }
  12. public void SerializeBinary(CoreBinaryWriter writer)
  13. {
  14. writer.Write(Key ?? "");
  15. writer.Write(Type.EntityName());
  16. writer.WriteBinaryValue(Filter);
  17. writer.WriteBinaryValue(Columns);
  18. writer.WriteBinaryValue(Sort);
  19. }
  20. public void DeserializeBinary(CoreBinaryReader reader)
  21. {
  22. Key = reader.ReadString();
  23. Type = CoreUtils.GetEntity(reader.ReadString());
  24. Filter = reader.ReadBinaryValue(typeof(Filter<>).MakeGenericType(Type)) as IFilter;
  25. Columns = reader.ReadBinaryValue(typeof(Columns<>).MakeGenericType(Type)) as IColumns;
  26. Sort = reader.ReadBinaryValue(typeof(SortOrder<>).MakeGenericType(Type)) as ISortOrder;
  27. }
  28. public string FullDescription() => $"[{Filter}]";
  29. public string ShortDescription() => $"Query";
  30. }
  31. }