using System.Threading; using System.Threading.Tasks; using CleanArchitecture.Domain.Entities; using CleanArchitecture.Shared.Events.User; using MediatR; using Microsoft.Extensions.Caching.Distributed; namespace CleanArchitecture.Domain.EventHandler; public sealed class UserEventHandler : INotificationHandler, INotificationHandler, INotificationHandler, INotificationHandler { private readonly IDistributedCache _distributedCache; public UserEventHandler(IDistributedCache distributedCache) { _distributedCache = distributedCache; } public Task Handle(PasswordChangedEvent notification, CancellationToken cancellationToken) { return Task.CompletedTask; } public async Task Handle(UserCreatedEvent notification, CancellationToken cancellationToken) { await _distributedCache.RemoveAsync( CacheKeyGenerator.GetEntityCacheKey(notification.TenantId), cancellationToken); } public async Task Handle(UserDeletedEvent notification, CancellationToken cancellationToken) { await _distributedCache.RemoveAsync( CacheKeyGenerator.GetEntityCacheKey(notification.TenantId), cancellationToken); } public async Task Handle(UserUpdatedEvent notification, CancellationToken cancellationToken) { await _distributedCache.RemoveAsync( CacheKeyGenerator.GetEntityCacheKey(notification.TenantId), cancellationToken); } }