IStore.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using InABox.Core;
  2. namespace InABox.Database
  3. {
  4. public interface IStore
  5. {
  6. bool IsSubStore { get; set; }
  7. Guid UserGuid { get; set; }
  8. string UserID { get; set; }
  9. Platform Platform { get; set; }
  10. string Version { get; set; }
  11. IProvider Provider { get; set; }
  12. // Called once at Database Startup to initialise caches etc
  13. void Init();
  14. IEnumerable<object[]> List(Filter<Entity>? filter = null, Columns<Entity>? columns = null, SortOrder<Entity>? sort = null);
  15. CoreTable Query(Filter<Entity>? filter = null, Columns<Entity>? columns = null, SortOrder<Entity>? sort = null);
  16. Entity[] Load(Filter<Entity>? filter = null, SortOrder<Entity>? sort = null);
  17. void Save(Entity entity, string auditnote);
  18. void Save(IEnumerable<Entity> entities, string auditnote);
  19. void Delete(Entity entity, string auditnote);
  20. void Delete(IEnumerable<Entity> entities, string auditnote);
  21. void BulkUpdate(IEnumerable<Entity> entities);
  22. }
  23. public interface IStore<T> : IStore where T : Entity, new()
  24. {
  25. IEnumerable<object[]> List(Filter<T>? filter = null, Columns<T>? columns = null, SortOrder<T>? sort = null);
  26. CoreTable Query(Filter<T>? filter = null, Columns<T>? columns = null, SortOrder<T>? sort = null);
  27. T[] Load(Filter<T>? filter = null, SortOrder<T>? sort = null);
  28. void Save(T entity, string auditnote);
  29. void Save(IEnumerable<T> entities, string auditnote);
  30. void Delete(T entity, string auditnote);
  31. void Delete(IEnumerable<T> entities, string auditnote);
  32. void BulkUpdate(IEnumerable<T> entities);
  33. //void ResetAggregate<TSource>(T entity, Expression<Func<TSource, object>> link, params IAggregate<TSource, T>[] aggregates) where TSource : Entity, new();
  34. //DoubleAggregate<T, TTarget> Sum<TTarget>(Expression<Func<T, double>> source, Expression<Func<TTarget, double>> target) where TTarget : Entity, new();
  35. //TimeSpanAggregate<T, TTarget> Sum<TTarget>(Expression<Func<T, TimeSpan>> source, Expression<Func<TTarget, TimeSpan>> target) where TTarget : Entity, new();
  36. //IntegerAggregate<T, TTarget> Sum<TTarget>(Expression<Func<T, int>> source, Expression<Func<TTarget, int>> target) where TTarget : Entity, new();
  37. //DoubleAggregate<T, TTarget> Count<TTarget>(Expression<Func<TTarget, double>> target) where TTarget : Entity, new();
  38. //TimeSpanAggregate<T, TTarget> Count<TTarget>(Expression<Func<TTarget, TimeSpan>> target) where TTarget : Entity, new();
  39. //IntegerAggregate<T, TTarget> Count<TTarget>(Expression<Func<TTarget, int>> target) where TTarget : Entity, new();
  40. }
  41. }