aboutsummaryrefslogtreecommitdiff
path: root/backend/src/services/common.zig
diff options
context:
space:
mode:
authorJoris2025-04-19 12:36:38 +0200
committerJoris2025-04-19 12:38:24 +0200
commit632eef6424d8dc8d40c2906177892697679e7b85 (patch)
tree48d9cd60e9e96eab810b5f7bb3c7b1fa79e0438f /backend/src/services/common.zig
parent063d8ef9eaf874a941f4459e831057dd0a1b7ddd (diff)
Add ZIG server
Diffstat (limited to 'backend/src/services/common.zig')
-rw-r--r--backend/src/services/common.zig30
1 files changed, 30 insertions, 0 deletions
diff --git a/backend/src/services/common.zig b/backend/src/services/common.zig
new file mode 100644
index 0000000..42d18e9
--- /dev/null
+++ b/backend/src/services/common.zig
@@ -0,0 +1,30 @@
+const std = @import("std");
+const zqlite = @import("zqlite");
+const httpz = @import("httpz");
+
+const users_repo = @import("../repos/users_repo.zig");
+
+pub const Env = struct {
+ conn: zqlite.Conn,
+ secure_tokens: bool,
+ user: ?users_repo.User,
+};
+
+pub const ServiceError = error{
+ BadRequest,
+ NotFound,
+ Forbidden,
+};
+
+pub fn with_body(comptime T: type, req: *httpz.Request) !T {
+ if (req.body()) |body| {
+ if (std.json.parseFromSlice(T, req.arena, body, .{})) |parsed| {
+ defer parsed.deinit();
+ return parsed.value;
+ } else |_| {
+ return ServiceError.BadRequest;
+ }
+ } else {
+ return ServiceError.BadRequest;
+ }
+}