-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathAppExtensions.cs
More file actions
80 lines (70 loc) · 3.52 KB
/
AppExtensions.cs
File metadata and controls
80 lines (70 loc) · 3.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
using Projects;
namespace Aspire.AppHost.Extensions;
public static class AppExtensions
{
public static IResourceBuilder<ProjectResource> AddDmsApi(
this IDistributedApplicationBuilder builder,
DmsDatabaseResources databases,
IResourceBuilder<ParameterResource> apiKey,
IResourceBuilder<ParameterResource> isDevelopment)
{
return builder.AddProject<API>("api")
.WithDmsDatabaseReference(databases.OfflocRunningPicture)
.WithDmsDatabaseReference(databases.DeliusRunningPicture)
.WithDmsDatabaseReference(databases.Cluster)
.WithDmsDatabaseReference(databases.Audit)
.WithEnvironment("Authentication__ApiKey", apiKey)
.WithEnvironment("IsDevelopment", isDevelopment);
}
public static IResourceBuilder<ProjectResource> AddDmsVisualiser(
this IDistributedApplicationBuilder builder,
IResourceBuilder<ProjectResource> apiService)
{
return builder.AddProject<Visualiser>("visualiser")
.WithReference(apiService).WaitFor(apiService);
}
public static IDistributedApplicationBuilder AddDmsServices(
this IDistributedApplicationBuilder builder,
IResourceBuilder<RabbitMQServerResource> rabbit,
DmsDatabaseResources databases)
{
builder.AddDmsService<Blocking>("Blocking", rabbit, databases);
builder.AddDmsService<Cleanup>("Cleanup", rabbit, databases);
builder.AddDmsService<DbInteractions>("DbInteractions", rabbit, databases);
builder.AddDmsService<Delius_Parser>("Delius-Parser", rabbit, databases);
builder.AddDmsService<Import>("Import", rabbit, databases);
builder.AddDmsService<Logging>("Logging", rabbit, databases);
builder.AddDmsService<Matching_Engine>("Matching-Engine", rabbit, databases);
//builder.AddDmsService<Meow>("Meow", rabbit, databases);
builder.AddDmsService<Offloc_Cleaner>("Offloc-Cleaner", rabbit, databases);
builder.AddDmsService<Offloc_Parser>("Offloc-Parser", rabbit, databases);
//builder.AddDmsService<Orchestrator>("Orchestrator", rabbit, databases);
// Entry point - start the app to 'kick off' DMS
builder.AddDmsService<Kickoff>("Kickoff", rabbit, databases)
.WithExplicitStart();
return builder;
}
private static IResourceBuilder<ProjectResource> AddDmsService<TDmsProject>(
this IDistributedApplicationBuilder builder,
string name,
IResourceBuilder<RabbitMQServerResource> rabbit,
DmsDatabaseResources databases) where TDmsProject : IProjectMetadata, new()
{
var project = builder.AddProject<TDmsProject>(name)
.WithReference(rabbit).WaitFor(rabbit)
.WithDmsDatabaseReference(databases.OfflocStaging)
.WithDmsDatabaseReference(databases.OfflocRunningPicture)
.WithDmsDatabaseReference(databases.DeliusStaging)
.WithDmsDatabaseReference(databases.DeliusRunningPicture)
.WithDmsDatabaseReference(databases.Audit)
.WithDmsDatabaseReference(databases.Cluster)
.WithDmsDatabaseReference(databases.Matching)
.WithEnvironment("DmsFilesBasePath", "~/DMS/");
return project;
}
private static IResourceBuilder<ProjectResource> WithDmsDatabaseReference(this IResourceBuilder<ProjectResource> builder, DmsDatabaseResource database)
{
builder.WithReference(database.DatabaseResource).WaitForCompletion(database.SqlProjectResource);
return builder;
}
}