diff options
| author | physcik <mynameisgennadiy@vk.com> | 2026-04-14 21:50:53 +0500 |
|---|---|---|
| committer | physcik <mynameisgennadiy@vk.com> | 2026-04-14 21:50:53 +0500 |
| commit | 008de5f8a319f253ed5807160dc288855b1b6207 (patch) | |
| tree | 4cedfc944c75464658609dd630a9f9d5b482c118 /backend/src/API/WeaponsAPI.zig | |
| parent | a0826ce054d7468444c67306191cc7e2fe734eb0 (diff) | |
Clearer error messages
Diffstat (limited to 'backend/src/API/WeaponsAPI.zig')
| -rw-r--r-- | backend/src/API/WeaponsAPI.zig | 41 |
1 files changed, 14 insertions, 27 deletions
diff --git a/backend/src/API/WeaponsAPI.zig b/backend/src/API/WeaponsAPI.zig index 1b0ae00..b9fd532 100644 --- a/backend/src/API/WeaponsAPI.zig +++ b/backend/src/API/WeaponsAPI.zig @@ -5,7 +5,6 @@ const db = @import("../Database/Connection.zig"); const errDesc = @import("ErrorDescription.zig"); pub fn RegisterEndpoints(router: *httpz.Router(void, *const fn (*httpz.request.Request, *httpz.response.Response) anyerror!void)) void { - router.get("/weapons", testEndpoint, .{}); router.get("/weapons/ranged", getAllRangedWeapons, .{}); router.post("/weapons/ranged", newRangedWeapon, .{}); router.get("/weapons/ranged/:id", getRangedWeaponById, .{}); @@ -13,27 +12,6 @@ pub fn RegisterEndpoints(router: *httpz.Router(void, *const fn (*httpz.request.R router.delete("/weapons/ranged/:id", deleteRangedWeapon, .{}); } -fn testEndpoint(_: *httpz.Request, res: *httpz.Response) !void { - const testType: model.RangedWeaponType = .{ - .Id = "any", - .Name = "BudgetArms C-13", - .WeaponType = "P", - .Accuracy = -1, - .Concealability = "P", - .Avaliability = "E", - .Damage = "1D6", - .Ammunition = "5mm", - .NumberOfShots = 8, - .RateOfFire = 2, - .Reliability = "ST", - .CreatedAt = 0, - .UpdatedAt = 0, - }; - - res.status = 200; - try res.json(testType, .{}); -} - fn getAllRangedWeapons(req: *httpz.Request, res: *httpz.Response) !void { var found = try db.RangedWeapons.GetAll(req.arena); defer found.deinit(req.arena); @@ -51,6 +29,7 @@ fn getRangedWeaponById(req: *httpz.Request, res: *httpz.Response) !void { // Empty result handling if (err == db.ResultErrors.NotFound) { res.status = 204; + try res.json(errDesc.NotFoundDescriptor, .{}); return; } return err; @@ -60,12 +39,13 @@ fn getRangedWeaponById(req: *httpz.Request, res: *httpz.Response) !void { } fn newRangedWeapon(req: *httpz.Request, res: *httpz.Response) !void { - var body = try req.json(model.RangedWeaponType) orelse { + var body = try req.json(model.RequestBody) orelse { res.status = 400; return; }; - db.RangedWeapons.Create(&body) catch |err| { + var weapon = body.ToModel(); + db.RangedWeapons.Create(&weapon) catch |err| { if (err == db.ResultErrors.AlreadyExists) { res.status = 400; try res.json(errDesc.ErrorDescriptor { @@ -79,19 +59,26 @@ fn newRangedWeapon(req: *httpz.Request, res: *httpz.Response) !void { res.status = 201; } - fn updateRangedWeapon(req: *httpz.Request, res: *httpz.Response) !void { const id = req.param("id") orelse { res.status = 400; return; }; - var body = try req.json(model.RangedWeaponType) orelse { + var body = try req.json(model.RequestBody) orelse { res.status = 400; return; }; - try db.RangedWeapons.Update(id, &body); + var weapon = body.ToModel(); + db.RangedWeapons.Update(id, &weapon) catch |err| { + if (err == db.ResultErrors.NotFound) { + res.status = 204; + try res.json(errDesc.NotFoundDescriptor, .{}); + return; + } + return err; + }; } fn deleteRangedWeapon(req: *httpz.Request, res: *httpz.Response) !void { |
