-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathProgram.cs
More file actions
45 lines (33 loc) · 1.28 KB
/
Program.cs
File metadata and controls
45 lines (33 loc) · 1.28 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
using Hangfire;
using Hangfire.PostgreSql;
using OpenShock.Common;
using OpenShock.Common.Extensions;
using OpenShock.Cron;
using OpenShock.Cron.Utils;
using OpenShock.Common.Swagger;
var builder = OpenShockApplication.CreateDefaultBuilder<Program>(args);
builder.RegisterCommonOpenShockOptions();
var databaseConfig = builder.Configuration.GetDatabaseOptions();
var redisConfig = builder.Configuration.GetRedisConfigurationOptions();
builder.Services.AddOpenShockMemDB(redisConfig);
builder.Services.AddOpenShockDB(databaseConfig);
builder.Services.AddOpenShockServices();
builder.Services.AddHangfire(hangfire =>
hangfire.UsePostgreSqlStorage(c =>
c.UseNpgsqlConnection(databaseConfig.Conn)));
builder.Services.AddHangfireServer();
builder.Services.AddSwaggerExt<Program>();
var app = builder.Build();
await app.UseCommonOpenShockMiddleware();
var hangfireOptions = new DashboardOptions();
if (app.Environment.IsProduction())
{
hangfireOptions.AsyncAuthorization = [ new DashboardAdminAuth() ];
}
app.UseHangfireDashboard(options: hangfireOptions);
var jobManager = app.Services.GetRequiredService<IRecurringJobManagerV2>();
foreach (var cronJob in CronJobCollector.GetAllCronJobs())
{
jobManager.AddOrUpdate(cronJob.Name, cronJob.Job, cronJob.Schedule);
}
await app.RunAsync();