DemO/DEMO/Program.cs

51 lines
2.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// это главный файл, тут все начинается
using DEMO.Data; // база данных
using Microsoft.EntityFrameworkCore; // чтоб работать с базой
var builder = WebApplication.CreateBuilder(args);
// говорю что у меня есть контроллеры (api)
builder.Services.AddControllers();
// подключаю базу данных (простой файл sqlite, лежит рядом)
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlite(
builder.Configuration.GetConnectionString("DefaultConnection"))); // беру строку из настроек
builder.Services.AddOpenApi(); // для проверки api
var app = builder.Build(); // строю программу
// сам создаю базу если ее нет (чтоб на сервере все завелось само)
using (var scope = app.Services.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<AppDbContext>();
db.Database.Migrate(); // применяю миграции
// добавляю роли если их нет (без них регистрация не работает)
if (!db.Roles.Any())
{
db.Roles.Add(new DEMO.Models.Role { Name = "Admin" });
db.Roles.Add(new DEMO.Models.Role { Name = "Client" });
db.SaveChanges();
}
}
// в режиме разработки показываю api
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
}
// на сервере https делает nginx, поэтому тут редирект не нужен
// app.UseHttpsRedirection();
app.UseDefaultFiles(); // чтоб открывался index.html сам
app.UseStaticFiles(); // чтоб отдавать файлы из wwwroot
app.UseAuthorization(); // проверка прав (пока простая)
app.MapControllers(); // включаю все контроллеры
app.Run(); // запускаю, поехали