WebhookEventStore.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using Abp.Dependency;
  2. using Abp.Domain.Repositories;
  3. using Abp.Domain.Uow;
  4. using Abp.Webhooks;
  5. namespace VberZero.Webhooks;
  6. /// <summary>
  7. /// Implements <see cref="IWebhookEventStore"/> using repositories.
  8. /// </summary>
  9. public class WebhookEventStore : IWebhookEventStore, ITransientDependency
  10. {
  11. private readonly IRepository<WebhookEvent, Guid> _webhookRepository;
  12. private readonly IUnitOfWorkManager _unitOfWorkManager;
  13. public WebhookEventStore(
  14. IRepository<WebhookEvent, Guid> webhookRepository,
  15. IUnitOfWorkManager unitOfWorkManager)
  16. {
  17. _webhookRepository = webhookRepository;
  18. _unitOfWorkManager = unitOfWorkManager;
  19. }
  20. public virtual async Task<Guid> InsertAndGetIdAsync(WebhookEvent webhookEvent)
  21. {
  22. return await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
  23. {
  24. using (_unitOfWorkManager.Current.SetTenantId(webhookEvent.TenantId))
  25. {
  26. var id = await _webhookRepository.InsertAndGetIdAsync(webhookEvent);
  27. await _unitOfWorkManager.Current.SaveChangesAsync();
  28. return id;
  29. }
  30. });
  31. }
  32. public virtual Guid InsertAndGetId(WebhookEvent webhookEvent)
  33. {
  34. return _unitOfWorkManager.WithUnitOfWork(() =>
  35. {
  36. using (_unitOfWorkManager.Current.SetTenantId(webhookEvent.TenantId))
  37. {
  38. var id = _webhookRepository.InsertAndGetId(webhookEvent);
  39. _unitOfWorkManager.Current.SaveChanges();
  40. return id;
  41. }
  42. });
  43. }
  44. public virtual async Task<WebhookEvent> GetAsync(int? tenantId, Guid id)
  45. {
  46. return await _unitOfWorkManager.WithUnitOfWorkAsync(async () =>
  47. {
  48. using (_unitOfWorkManager.Current.SetTenantId(tenantId))
  49. {
  50. return await _webhookRepository.GetAsync(id);
  51. }
  52. });
  53. }
  54. public virtual WebhookEvent Get(int? tenantId, Guid id)
  55. {
  56. return _unitOfWorkManager.WithUnitOfWork(() =>
  57. {
  58. using (_unitOfWorkManager.Current.SetTenantId(tenantId))
  59. {
  60. return _webhookRepository.Get(id);
  61. }
  62. });
  63. }
  64. }