Skip to content

Commit

Permalink
fix: Do not bootstrap projections and indices when they are explicitl…
Browse files Browse the repository at this point in the history
…y disabled from configuration
  • Loading branch information
mynkow committed Jun 24, 2022
1 parent 99e1938 commit ce0069b
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 15 deletions.
17 changes: 11 additions & 6 deletions src/Elders.Cronus/Hosting/EventStoreIndicesStartup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,28 @@ public class EventStoreIndicesStartup : ICronusStartup
private readonly TenantsOptions tenants;
private readonly IPublisher<ICommand> publisher;
private readonly TypeContainer<IEventStoreIndex> indexTypeContainer;
private readonly CronusHostOptions cronusHostOptions;

public EventStoreIndicesStartup(TypeContainer<IEventStoreIndex> indexTypeContainer, IOptionsMonitor<TenantsOptions> tenantsOptions, IPublisher<ICommand> publisher)
public EventStoreIndicesStartup(TypeContainer<IEventStoreIndex> indexTypeContainer, IOptions<CronusHostOptions> cronusHostOptions, IOptionsMonitor<TenantsOptions> tenantsOptions, IPublisher<ICommand> publisher)
{
this.tenants = tenantsOptions.CurrentValue;
this.publisher = publisher;
this.indexTypeContainer = indexTypeContainer;
this.cronusHostOptions = cronusHostOptions.Value;
}

public void Bootstrap()
{
foreach (var index in indexTypeContainer.Items)
if (cronusHostOptions.ApplicationServicesEnabled)
{
foreach (var tenant in tenants.Tenants)
foreach (var index in indexTypeContainer.Items)
{
var id = new EventStoreIndexManagerId(index.GetContractId(), tenant);
var command = new RegisterIndex(id);
publisher.Publish(command);
foreach (var tenant in tenants.Tenants)
{
var id = new EventStoreIndexManagerId(index.GetContractId(), tenant);
var command = new RegisterIndex(id);
publisher.Publish(command);
}
}
}
}
Expand Down
23 changes: 14 additions & 9 deletions src/Elders.Cronus/Hosting/ProjectionsStartup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,30 @@ public class ProjectionsStartup : ICronusStartup
private readonly ProjectionHasher hasher;
private readonly IPublisher<ICommand> publisher;
private readonly TypeContainer<IProjection> handlerTypeContainer;
private readonly CronusHostOptions cronusHostOptions;

public ProjectionsStartup(TypeContainer<IProjection> handlerTypeContainer, IOptionsMonitor<TenantsOptions> tenantsOptions, ProjectionHasher hasher, IPublisher<ICommand> publisher)
public ProjectionsStartup(TypeContainer<IProjection> handlerTypeContainer, IOptions<CronusHostOptions> cronusHostOptions, IOptions<TenantsOptions> tenantsOptions, ProjectionHasher hasher, IPublisher<ICommand> publisher)
{
this.tenants = tenantsOptions.CurrentValue;
this.tenants = tenantsOptions.Value;
this.hasher = hasher;
this.publisher = publisher;
this.publisher = publisher;
this.handlerTypeContainer = handlerTypeContainer;
this.cronusHostOptions = cronusHostOptions.Value;
}

public void Bootstrap()
{
var systemProjection = typeof(ISystemProjection);
foreach (var handler in handlerTypeContainer.Items.OrderByDescending(x => systemProjection.IsAssignableFrom(x)))
if (cronusHostOptions.ProjectionsEnabled)
{
foreach (var tenant in tenants.Tenants)
var systemProjection = typeof(ISystemProjection);
foreach (var handler in handlerTypeContainer.Items.OrderByDescending(x => systemProjection.IsAssignableFrom(x)))
{
var id = new ProjectionVersionManagerId(handler.GetContractId(), tenant);
var command = new RegisterProjection(id, hasher.CalculateHash(handler));
publisher.Publish(command);
foreach (var tenant in tenants.Tenants)
{
var id = new ProjectionVersionManagerId(handler.GetContractId(), tenant);
var command = new RegisterProjection(id, hasher.CalculateHash(handler));
publisher.Publish(command);
}
}
}
}
Expand Down

0 comments on commit ce0069b

Please sign in to comment.