IStore.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. Logger Logger { get; set; }
  13. Type Type { get; }
  14. // Called once at Database Startup to initialise caches etc
  15. void Init();
  16. CoreTable Query(IFilter? filter = null, IColumns? columns = null, ISortOrder? sort = null, CoreRange? range = 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. public IStore<TEntity> FindSubStore<TEntity>() where TEntity : Entity, new();
  22. }
  23. public interface IStore<T> : IStore where T : Entity, new()
  24. {
  25. CoreTable Query(Filter<T>? filter = null, Columns<T>? columns = null, SortOrder<T>? sort = null, CoreRange? range = null);
  26. void Save(T entity, string auditnote);
  27. void Save(IEnumerable<T> entities, string auditnote);
  28. void Delete(T entity, string auditnote);
  29. void Delete(IEnumerable<T> entities, string auditnote);
  30. }
  31. }