add architecture skeleton

This commit is contained in:
2026-04-19 13:12:04 +03:00
parent 312708531f
commit 2738f31f26
84 changed files with 2710 additions and 70 deletions
+44
View File
@@ -0,0 +1,44 @@
using GymLogAI.AI;
using GymLogAI.Application.Handlers;
using GymLogAI.Persistence;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Telegram.Bot;
namespace GymLogAI.TelegramBot;
public static class Program
{
public static async Task Main(string[] args)
{
var builder = Host.CreateApplicationBuilder(args);
builder.Services
.AddOptions<TelegramBotOptions>()
.Bind(builder.Configuration.GetSection(TelegramBotOptions.SectionName));
builder.Services.AddPersistence(builder.Configuration);
builder.Services.AddAiServices(builder.Configuration);
builder.Services.AddScoped<ImportTelegramMessageHandler>();
builder.Services.AddScoped<ParseTelegramMessageHandler>();
builder.Services.AddScoped<RecommendWorkoutHandler>();
builder.Services.AddSingleton<ITelegramBotClient>(serviceProvider =>
{
var options = serviceProvider.GetRequiredService<Microsoft.Extensions.Options.IOptions<TelegramBotOptions>>().Value;
return new TelegramBotClient(options.BotToken ?? string.Empty);
});
builder.Services.AddScoped<UpdateHandler>();
builder.Services.AddHostedService<TelegramBotHostedService>();
var host = builder.Build();
await using (var scope = host.Services.CreateAsyncScope())
{
var dbContext = scope.ServiceProvider.GetRequiredService<AppDbContext>();
await dbContext.Database.MigrateAsync();
}
await host.RunAsync();
}
}