Introduce MongoDbDatabaseEventHandlerBase

pull/17738/head
Yunus Emre Kalkan 2 years ago
parent 31cac8481d
commit d079357368

@ -0,0 +1,58 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.MultiTenancy;
namespace Volo.Abp.MongoDB;
public abstract class MongoDbDatabaseEventHandlerBase<TDbContext> :
IDistributedEventHandler<TenantCreatedEto>,
IDistributedEventHandler<TenantConnectionStringUpdatedEto>,
ITransientDependency
where TDbContext : IAbpMongoDbContext
{
protected string DatabaseName { get; }
protected MongoDbDatabaseEventHandlerBase(string databaseName)
{
DatabaseName = databaseName;
}
public virtual async Task HandleEventAsync(TenantCreatedEto eventData)
{
await SeedAsync(eventData.Id);
await AfterTenantCreated(eventData);
}
protected virtual Task AfterTenantCreated(TenantCreatedEto eventData)
{
return Task.CompletedTask;
}
public virtual async Task HandleEventAsync(TenantConnectionStringUpdatedEto eventData)
{
if (eventData.ConnectionStringName != DatabaseName &&
eventData.ConnectionStringName != Data.ConnectionStrings.DefaultConnectionStringName ||
eventData.NewValue.IsNullOrWhiteSpace())
{
return;
}
await SeedAsync(eventData.Id);
await AfterTenantConnectionStringUpdated(eventData);
}
protected virtual Task AfterTenantConnectionStringUpdated(TenantConnectionStringUpdatedEto eventData)
{
return Task.CompletedTask;
}
protected virtual Task SeedAsync(Guid? tenantId)
{
return Task.CompletedTask;
}
}
Loading…
Cancel
Save