/
VFlov
/
NotificationService_1
Обзор
Документация
Войти
/
VFlov
/
NotificationService_1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Gateway/NotificationService.Gateway/Program.cs
82 строки
2 KB
VFlov
first_commit
27 ноя 2025, 11:43
27 ноя 2025, 11:43
819df67
Код
Авторство
О чём код?
using Microsoft.EntityFrameworkCore; using NotificationService.Gateway.Services; using NotificationService.Shared.Configuration; using NotificationService.Shared.Data; using NotificationService.Shared.Infrastructure; using NotificationService.Shared.Interfaces; using NotificationService.Shared.Repositories; using Prometheus; using Serilog; var builder = WebApplication.CreateBuilder(args); // Настройка Serilog Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(builder.Configuration) .Enrich.FromLogContext() .WriteTo.Console() .CreateLogger(); builder.Host.UseSerilog(); // Настройки builder.Services.Configure<RabbitMQSettings>( builder.Configuration.GetSection("RabbitMQ")); builder.Services.Configure<DatabaseSettings>( builder.Configuration.GetSection("Database")); // Database var dbSettings = builder.Configuration.GetSection("Database").Get<DatabaseSettings>(); builder.Services.AddDbContext<NotificationDbContext>(options => options.UseNpgsql(dbSettings?.ConnectionString ?? throw new InvalidOperationException("Database connection string not configured"))); // RabbitMQ var rabbitSettings = builder.Configuration.GetSection("RabbitMQ").Get<RabbitMQSettings>(); builder.Services.AddSingleton<IMessageQueue>(sp => new RabbitMQMessageQueue( rabbitSettings?.ConnectionString ?? "amqp://guest:guest@localhost:5672", sp.GetRequiredService<ILogger<RabbitMQMessageQueue>>())); // Repositories and Services builder.Services.AddScoped<INotificationRepository, NotificationRepository>(); builder.Services.AddScoped<INotificationService, NotificationServiceImpl>(); // Controllers builder.Services.AddControllers(); // Swagger/OpenAPI builder.Services.AddEndpointsApiExplorer(); builder.Services.AddOpenApi(); // Health Checks builder.Services.AddHealthChecks() .AddNpgSql(dbSettings?.ConnectionString ?? string.Empty, name: "database"); var app = builder.Build(); // Database Migration using (var scope = app.Services.CreateScope()) { var db = scope.ServiceProvider.GetRequiredService<NotificationDbContext>(); db.Database.Migrate(); } // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.MapOpenApi(); } app.UseSerilogRequestLogging(); // Prometheus metrics app.UseMetricServer(); app.UseHttpMetrics(); app.UseHttpsRedirection(); app.MapControllers(); app.MapHealthChecks("/health"); app.Run();