IProcessorStorageProvider.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Quadarax.Foundation.Core.Business.Processor.Enums;
  2. using Quadarax.Foundation.Core.Business.Processor.Task;
  3. namespace Quadarax.Foundation.Core.Business.Processor.Providers
  4. {
  5. public interface IProcessorStorageProvider : IDisposable
  6. {
  7. /// <summary>
  8. /// Open storage connection if needed
  9. /// </summary>
  10. public void Open();
  11. /// <summary>
  12. /// Close storage connection if needed
  13. /// </summary>
  14. public void Close();
  15. /// <summary>
  16. /// Ensure storage is ready to use. If not exists, create it.
  17. /// <description>This operation doesn't use Open or Close operation to access to storage and doesn't affects Open/Close state..</description>
  18. /// </summary>
  19. /// <returns>Returns true, if storage already exists. Otherwise returns false that storage was created.</returns>
  20. public bool EnsureStorage();
  21. /// <summary>
  22. /// Create new task item in storage and save it.
  23. /// </summary>
  24. /// <param name="item">Item to create.</param>
  25. /// <returns>Identifier of new created item.</returns>
  26. public ITaskIdentifier Create(ITaskItem item);
  27. /// <summary>
  28. /// Get task item from storage by identifier.
  29. /// </summary>
  30. /// <param name="ids">Storage identifiers of Task item</param>
  31. /// <returns>Array of Task items</returns>
  32. public ITaskItem[] Get(params ITaskIdentifier[] ids);
  33. /// <summary>
  34. /// Saves task items in storage.
  35. /// </summary>
  36. /// <param name="items">Task items to save.</param>
  37. public void Set(params ITaskItem[] items);
  38. /// <summary>
  39. /// Deletes task items in storage (or mark it for delete).
  40. /// </summary>
  41. /// <param name="force">Flag is set, performs physical delete of item. Otherwise mark item to delete.</param>
  42. /// <param name="ids">Storage identifiers of Task item</param>
  43. public void Delete(bool force, params ITaskIdentifier[] ids);
  44. /// <summary>
  45. /// Query task items from storage by status.
  46. /// </summary>
  47. /// <param name="statuses">Allowed statuses</param>
  48. /// <returns>Queryable collection of selected Task items.</returns>
  49. public IQueryable<ITaskItem> Query(params ProcessStatusEnum[] statuses);
  50. }
  51. }