67 lines
2.1 KiB
C#
67 lines
2.1 KiB
C#
using KLHZ.Trader.Core.Common;
|
|
using KLHZ.Trader.Core.Common.Messaging.Contracts;
|
|
using KLHZ.Trader.Core.Common.Messaging.Services;
|
|
using KLHZ.Trader.Core.DataLayer;
|
|
using KLHZ.Trader.Core.Declisions.Services;
|
|
using KLHZ.Trader.Core.Exchange;
|
|
using KLHZ.Trader.Core.Exchange.Services;
|
|
using KLHZ.Trader.Core.TG;
|
|
using KLHZ.Trader.Core.TG.Services;
|
|
using KLHZ.Trader.Service.Infrastructure;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Prometheus;
|
|
using Serilog;
|
|
using Telegram.Bot.Polling;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
builder.Services.AddEndpointsApiExplorer();
|
|
builder.Services.AddSwaggerGen();
|
|
builder.Services.AddControllers();
|
|
|
|
|
|
builder.Services.AddMetrics();
|
|
|
|
builder.Logging.ClearProviders();
|
|
builder.Logging.AddSerilog();
|
|
builder.Host.ConfigureSerilog(
|
|
builder.Configuration.GetSection("LokiUrl").Value,
|
|
serviceName: "klhz.trader",
|
|
excludeEFLogs: false,
|
|
excludeMetricsScrapingLogs: true,
|
|
EFMinLogLevel: Serilog.Events.LogEventLevel.Warning
|
|
);
|
|
|
|
builder.Services.AddInvestApiClient((_, settings) =>
|
|
{
|
|
settings.AccessToken = builder.Configuration.GetSection(nameof(ExchangeConfig))["Token"];
|
|
});
|
|
|
|
builder.Services.AddDbContextFactory<TraderDbContext>(options =>
|
|
{
|
|
options.UseNpgsql(builder.Configuration.GetConnectionString("PostgresConnection"));
|
|
});
|
|
|
|
builder.Services.AddHostedService<BotStarter>();
|
|
builder.Services.AddHostedService<ExchangeDataReader>();
|
|
builder.Services.AddHostedService<Trader>();
|
|
|
|
builder.Services.AddSingleton<IUpdateHandler, BotMessagesHandler>();
|
|
builder.Services.AddSingleton<BotModeSwitcher>();
|
|
builder.Services.AddSingleton<IDataBus, DataBus>();
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
builder.Services.AddKeyedSingleton<ManagedAccount>(i);
|
|
}
|
|
|
|
builder.Services.Configure<TgBotConfig>(builder.Configuration.GetSection(nameof(TgBotConfig)));
|
|
builder.Services.Configure<ExchangeConfig>(builder.Configuration.GetSection(nameof(ExchangeConfig)));
|
|
|
|
var app = builder.Build();
|
|
app.UseSwagger();
|
|
app.UseSwaggerUI();
|
|
app.MapMetrics();
|
|
app.MapControllers();
|
|
app.Run();
|