aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Program.cs
blob: 1f0f72b9eb365352b2652c3913e64374f767ff47 (plain)
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
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System.Resources;
using Timeline.Entities;
using Timeline.Services;

[assembly: NeutralResourcesLanguage("en")]

namespace Timeline
{
  public static class Program
  {
    public static void Main(string[] args)
    {
      var host = CreateWebHostBuilder(args).Build();

      var env = host.Services.GetRequiredService<IWebHostEnvironment>();

      var databaseBackupService = host.Services.GetRequiredService<IDatabaseBackupService>();
      databaseBackupService.BackupNow();

      if (env.IsProduction())
      {
        using (var scope = host.Services.CreateScope())
        {
          var databaseContext = scope.ServiceProvider.GetRequiredService<DatabaseContext>();
          databaseContext.Database.Migrate();
        }
      }

      host.Run();
    }

    public static IHostBuilder CreateWebHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration(config =>
            {
              config.AddEnvironmentVariables("Timeline_");
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
              webBuilder.UseStartup<Startup>();
            });
  }
}