From fff2c645dc82c6bcc9ad3243a9985a5172d8b2b9 Mon Sep 17 00:00:00 2001
From: neroduckale <neroduck@vk.com>
Date: Fri, 12 Jan 2024 04:27:41 +0500
Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=B2=D0=B5=D0=BB=20=D0=B2=D1=81?=
 =?UTF-8?q?=D0=B5=20API=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D1=8B=20=D0=B2=20?=
 =?UTF-8?q?=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D1=84?=
 =?UTF-8?q?=D0=B0=D0=B9=D0=BB=20=D0=B4=D0=BB=D1=8F=20=D1=83=D0=B4=D0=BE?=
 =?UTF-8?q?=D0=B1=D1=81=D1=82=D0=B2=D0=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 nrdkwebsite/API.cs     | 45 ++++++++++++++++++++++++++++++++++++++++++
 nrdkwebsite/Program.cs | 37 +++++-----------------------------
 2 files changed, 50 insertions(+), 32 deletions(-)
 create mode 100644 nrdkwebsite/API.cs

diff --git a/nrdkwebsite/API.cs b/nrdkwebsite/API.cs
new file mode 100644
index 0000000..07bb038
--- /dev/null
+++ b/nrdkwebsite/API.cs
@@ -0,0 +1,45 @@
+namespace nrdkwebsite;
+
+public static class API
+{
+    public static async Task<User> PostNewUser(NewUser newuser, DatabaseHandler db)
+    {
+        User user = new User(newuser.nickname, db.users.OrderBy(p => p.id).Last().id + 1, newuser.mast);
+        await db.users.AddAsync(user);
+        await db.SaveChangesAsync();
+        return user;
+    }
+    public static async Task<IResult> DeleteUser(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);
+    }
+    public static IResult GetUserByName(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);
+    }
+    public static IResult GetUserById(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);
+    }
+    public static List<User> GetUsers(DatabaseHandler db)
+    {
+        return db.users.OrderBy(u => u.id).ToList();
+    }
+
+}
\ No newline at end of file
diff --git a/nrdkwebsite/Program.cs b/nrdkwebsite/Program.cs
index 0659947..d73ab58 100644
--- a/nrdkwebsite/Program.cs
+++ b/nrdkwebsite/Program.cs
@@ -19,38 +19,11 @@ 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 (NewUser newuser, DatabaseHandler db) => {
-    User user = new User(newuser.nickname, db.users.OrderBy(p => p.id).Last().id + 1, newuser.mast);
-    await db.users.AddAsync(user);
-    await db.SaveChangesAsync();
-    return user;
-}); //WORKS
+app.MapGet("/api/users", API.GetUsers); //WORKS
+app.MapGet("/api/users/{id:int}", API.GetUserById); //WORKS
+app.MapGet("/api/users/nickname/{name}", API.GetUserByName); //WORKS
+app.MapDelete("/api/users/{id:int}", API.DeleteUser); //WORKS
+app.MapPost("/api/users", API.PostNewUser); //WORKS
 
 app.UseRouting();
 app.UseAuthorization();