summaryrefslogtreecommitdiff
path: root/backend/src/API
diff options
context:
space:
mode:
authorphyscik <mynameisgennadiy@vk.com>2026-04-15 22:16:17 +0500
committerphyscik <mynameisgennadiy@vk.com>2026-04-15 22:16:17 +0500
commit9848b5589773a2d3e172fe72285b9203c36fd260 (patch)
treea079f11e46c1e1eed76ff84d94dc90303dd05c9c /backend/src/API
parentdf1052bad682d957a60ded13cd6243bd44ca83e2 (diff)
Register endpoint
Diffstat (limited to 'backend/src/API')
-rw-r--r--backend/src/API/AuthenticationAPI.zig30
-rw-r--r--backend/src/API/ErrorDescription.zig4
-rw-r--r--backend/src/API/WeaponsAPI.zig4
3 files changed, 36 insertions, 2 deletions
diff --git a/backend/src/API/AuthenticationAPI.zig b/backend/src/API/AuthenticationAPI.zig
new file mode 100644
index 0000000..23a979f
--- /dev/null
+++ b/backend/src/API/AuthenticationAPI.zig
@@ -0,0 +1,30 @@
+const std = @import("std");
+const httpz = @import("httpz");
+const model = @import("../Models/User.zig");
+const db = @import("../Database/Connection.zig");
+const errDesc = @import("ErrorDescription.zig");
+const Handler = @import("../Handler.zig");
+
+pub fn RegisterEndpoints(router: *httpz.Router(*Handler.Handler,*const fn (*Handler.Handler, *httpz.request.Request, *httpz.response.Response) anyerror!void)) void {
+ router.post("/auth/register", register, .{});
+}
+
+fn register(_: *Handler.Handler, req: *httpz.Request, res: *httpz.Response) !void {
+ var body = try req.json(model.RequestBody) orelse {
+ res.setStatus(.bad_request);
+ return;
+ };
+
+ var body_model = try body.ToModel(req.arena);
+
+ db.Users.Create(&body_model) catch |err| {
+ if (err == db.ResultErrors.AlreadyExists) {
+ res.setStatus(.bad_request);
+ try res.json(errDesc.AlreadyExistsDescriptor, .{});
+ return;
+ }
+ res.setStatus(.internal_server_error);
+ return;
+ };
+ res.setStatus(.created);
+}
diff --git a/backend/src/API/ErrorDescription.zig b/backend/src/API/ErrorDescription.zig
index 76f420a..2c3f338 100644
--- a/backend/src/API/ErrorDescription.zig
+++ b/backend/src/API/ErrorDescription.zig
@@ -5,3 +5,7 @@ pub const ErrorDescriptor = struct {
pub const NotFoundDescriptor = ErrorDescriptor {
.Message = "The requested object was not found"
};
+
+pub const AlreadyExistsDescriptor = ErrorDescriptor {
+ .Message = "The object already exists in the database"
+};
diff --git a/backend/src/API/WeaponsAPI.zig b/backend/src/API/WeaponsAPI.zig
index 75cd6e8..901bbb0 100644
--- a/backend/src/API/WeaponsAPI.zig
+++ b/backend/src/API/WeaponsAPI.zig
@@ -62,12 +62,12 @@ fn newRangedWeapon(_: *Handler.Handler, req: *httpz.Request, res: *httpz.Respons
fn updateRangedWeapon(_: *Handler.Handler, req: *httpz.Request, res: *httpz.Response) !void {
const id = req.param("id") orelse {
- res.setStatus(.no_content);
+ res.setStatus(.bad_request);
return;
};
var body = try req.json(model.RequestBody) orelse {
- res.setStatus(.no_content);
+ res.setStatus(.bad_request);
return;
};