This repository was archived by the owner on May 9, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
77 lines (67 loc) · 3.21 KB
/
Program.cs
File metadata and controls
77 lines (67 loc) · 3.21 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.EntityFrameworkCore;
using System.Reflection;
using TopLibraryManager.Services.Interfaces;
using TopLibraryManager.Services.Implementations;
using TopLibraryManager.Data;
using TopLibraryManager.Commands;
using TopLibraryManager.Commands.Books;
using TopLibraryManager.Commands.Readers;
using TopLibraryManager.Commands.Librarians;
using TopLibraryManager.Commands.Loans;
using TopLibraryManager.Commands.System;
var host = Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
config.SetBasePath(Directory.GetCurrentDirectory());
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: false);
})
.ConfigureServices((context, services) =>
{
// настраиваем контекст базы данных библиотеки
services.AddDbContext<LibraryDbContext>(options =>
{
var connectionString = context.Configuration.GetConnectionString("Library");
options.UseSqlite(connectionString);
});
// регистрируем сервисы
services.AddSingleton<IConsoleUIService, ConsoleUIService>();
services.AddTransient<ILibrarianService, LibrarianService>();
services.AddTransient<IBookService, BookService>();
services.AddTransient<IReaderService, ReaderService>();
services.AddTransient<ILoanService, LoanService>();
services.AddTransient<IFineService, FineService>();
services.AddTransient<ICommandProcessorService, CommandProcessorService>();
services.AddTransient<IAuthService, AuthService>();
// регистрируем фабрику команд и реестр
services.AddSingleton<ICommandFactory, CommandFactory>();
services.AddSingleton<CommandRegistry>();
// регистрируем все команды
services.AddTransient<CreateBookCommand>();
services.AddTransient<DeleteBookCommand>();
services.AddTransient<SearchBooksCommand>();
services.AddTransient<UpdateBookCommand>();
services.AddTransient<DeleteLibrarianCommand>();
services.AddTransient<GetLibrarianCommand>();
services.AddTransient<RegisterLibrarianCommand>();
services.AddTransient<CreateReaderCommand>();
services.AddTransient<DeleteReaderCommand>();
services.AddTransient<GetReaderCommand>();
services.AddTransient<SearchReadersCommand>();
services.AddTransient<UpdateReaderCommand>();
services.AddTransient<CreateLoanCommand>();
services.AddTransient<ReturnBookCommand>();
services.AddTransient<ListActiveLoansCommand>();
services.AddTransient<ViewLoanDetailsCommand>();
services.AddTransient<PayFineCommand>();
services.AddTransient<ExitCommand>();
services.AddTransient<HelloCommand>();
services.AddTransient<HelpCommand>();
services.AddTransient<UnknownCommand>();
// регистрируем цикл приложения
services.AddHostedService<AppHostedService>();
})
.Build();
await host.RunAsync();