diff options
Diffstat (limited to 'backend/src/services/markers_service.zig')
-rw-r--r-- | backend/src/services/markers_service.zig | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/backend/src/services/markers_service.zig b/backend/src/services/markers_service.zig new file mode 100644 index 0000000..9e69682 --- /dev/null +++ b/backend/src/services/markers_service.zig @@ -0,0 +1,31 @@ +const httpz = @import("httpz"); + +const markers_repo = @import("../repos/markers_repo.zig"); +const common = @import("common.zig"); + +pub fn list_by_map(env: *common.Env, req: *httpz.Request, res: *httpz.Response) !void { + const query = try req.query(); + const map_id = query.get("map").?; + const maps = try markers_repo.get_markers(res.arena, env.conn, map_id); + try res.json(maps.items, .{}); +} + +pub fn create(env: *common.Env, req: *httpz.Request, res: *httpz.Response) !void { + const query = try req.query(); + const map_id = query.get("map").?; + const payload = try common.with_body(markers_repo.Payload, req); + const marker = try markers_repo.create(res.arena, env.conn, map_id, payload); + try res.json(marker, .{}); +} + +pub fn update(env: *common.Env, req: *httpz.Request, res: *httpz.Response) !void { + const id = req.param("id").?; + const payload = try common.with_body(markers_repo.Payload, req); + const map = try markers_repo.update(env.conn, id, payload); + 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(env.conn, id); +} |