From 9848b5589773a2d3e172fe72285b9203c36fd260 Mon Sep 17 00:00:00 2001 From: physcik Date: Wed, 15 Apr 2026 22:16:17 +0500 Subject: Register endpoint --- backend/src/API/AuthenticationAPI.zig | 30 ++++++++++++++++++++++++++++++ backend/src/API/ErrorDescription.zig | 4 ++++ backend/src/API/WeaponsAPI.zig | 4 ++-- 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 backend/src/API/AuthenticationAPI.zig (limited to 'backend/src/API') 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; }; -- cgit v1.3