diff options
author | Joris | 2025-04-19 12:36:38 +0200 |
---|---|---|
committer | Joris | 2025-04-19 12:38:24 +0200 |
commit | 632eef6424d8dc8d40c2906177892697679e7b85 (patch) | |
tree | 48d9cd60e9e96eab810b5f7bb3c7b1fa79e0438f /backend/src/services/maps_service.zig | |
parent | 063d8ef9eaf874a941f4459e831057dd0a1b7ddd (diff) |
Add ZIG server
Diffstat (limited to 'backend/src/services/maps_service.zig')
-rw-r--r-- | backend/src/services/maps_service.zig | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/backend/src/services/maps_service.zig b/backend/src/services/maps_service.zig new file mode 100644 index 0000000..d634383 --- /dev/null +++ b/backend/src/services/maps_service.zig @@ -0,0 +1,39 @@ +const httpz = @import("httpz"); + +const maps_repo = @import("../repos/maps_repo.zig"); +const markers_repo = @import("../repos/markers_repo.zig"); +const common = @import("common.zig"); + +pub fn list(env: *common.Env, _: *httpz.Request, res: *httpz.Response) !void { + const maps = try maps_repo.get_maps(res.arena, env.conn); + try res.json(maps.items, .{}); +} + +pub fn get(env: *common.Env, req: *httpz.Request, res: *httpz.Response) !void { + const id = req.param("id").?; + const map = try maps_repo.get_map(res.arena, env.conn, id); + try res.json(map, .{}); +} + +const CreateMap = struct { name: []const u8 }; + +pub fn create(env: *common.Env, req: *httpz.Request, res: *httpz.Response) !void { + const payload = try common.with_body(CreateMap, req); + const map = try maps_repo.create(res.arena, env.conn, payload.name); + try res.json(map, .{}); +} + +const UpdateMap = struct { name: []const u8 }; + +pub fn update(env: *common.Env, req: *httpz.Request, res: *httpz.Response) !void { + const id = req.param("id").?; + const payload = try common.with_body(UpdateMap, req); + const map = try maps_repo.update(env.conn, id, payload.name); + try res.json(map, .{}); +} + +pub fn delete(env: *common.Env, req: *httpz.Request, _: *httpz.Response) !void { + const id = req.param("id").?; + try markers_repo.delete_by_map_id(env.conn, id); + try maps_repo.delete(env.conn, id); +} |