using Microsoft.EntityFrameworkCore; using nrdkwebsite; using Pomelo.EntityFrameworkCore.MySql.Infrastructure; var builder = WebApplication.CreateBuilder(args); #pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type. var connection = builder.Configuration.GetConnectionString("DefaultConnection"); #pragma warning restore CS8600 // Converting null literal or possible null value to non-nullable type. builder.Services.AddDbContext(options => options.UseMySql(connection, ServerVersion.Create(new Version(8, 0, 35), ServerType.MySql))); builder.Services.AddRazorPages(); var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseStatusCodePagesWithReExecute("/errors/{0}"); app.UseHttpsRedirection(); app.UseStaticFiles(); app.MapGet("/api/users", (DatabaseHandler db) => db.users.ToList()); //WORKS app.MapGet("/api/users/{id:int}", (int id, DatabaseHandler db) => { var users = db.users.ToList(); User? user = users.FirstOrDefault(u => u.id == id); // если не найден, отправляем статусный код и сообщение об ошибке if (user == null) return Results.NotFound(new { message = "Пользователь не найден" }); // если пользователь найден, отправляем его return Results.Json(user); }); //WORKS app.MapGet("/api/users/nickname/{name}", (string name, DatabaseHandler db) => { var users = db.users.ToList(); User? user = users.FirstOrDefault(u => u.nickname == name); // если не найден, отправляем статусный код и сообщение об ошибке if (user == null) return Results.NotFound(new { message = "Пользователь не найден" }); // если пользователь найден, отправляем его return Results.Json(user); }); //WORKS app.MapDelete("/api/users/{id:int}", async (int id, DatabaseHandler db) => { User? user = db.users.FirstOrDefault(u => u.id == id); if (user == null) return Results.NotFound(new { message = "Пользователь не найден" }); db.users.Remove(user); await db.SaveChangesAsync(); return Results.Json(user); }); //WORKS app.MapPost("/api/users", async (User user, DatabaseHandler db)=> { user.id = db.users.Count() + 1; await db.users.AddAsync(user); await db.SaveChangesAsync(); return user; }); //WORKS app.UseRouting(); app.UseAuthorization(); app.MapRazorPages(); app.Run();