add architecture skeleton
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user