aboutsummaryrefslogtreecommitdiff
path: root/backend/src/services/markers_service.zig
diff options
context:
space:
mode:
Diffstat (limited to 'backend/src/services/markers_service.zig')
-rw-r--r--backend/src/services/markers_service.zig31
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);
+}