diff options
Diffstat (limited to 'src/routes/api/profile')
| -rw-r--r-- | src/routes/api/profile/root.zig | 4 | ||||
| -rw-r--r-- | src/routes/api/profile/set.zig | 26 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/routes/api/profile/root.zig b/src/routes/api/profile/root.zig index 632c09c..04bf042 100644 --- a/src/routes/api/profile/root.zig +++ b/src/routes/api/profile/root.zig @@ -1 +1,5 @@ +const memora = @import("memora"); +const HandlerInfo = memora.routes.HandlerInfo; + pub const image = @import("image/root.zig"); +pub const set: HandlerInfo = .from_type(@import("set.zig")); diff --git a/src/routes/api/profile/set.zig b/src/routes/api/profile/set.zig new file mode 100644 index 0000000..a007b23 --- /dev/null +++ b/src/routes/api/profile/set.zig @@ -0,0 +1,26 @@ +const std = @import("std"); + +const memora = @import("memora"); +const Context = memora.Context; +const Storage = memora.Storage; + +pub const access = .users; + +const Body = struct { + full_name: []const u8, + birthday: []const u8, +}; + +pub fn post(ctx: *Context, body: Body) !void { + if (ctx.storage.sessions.get(ctx.storage, ctx.fingerprint)) |session| { + var user = try Storage.User.open(ctx.storage, session.info.name); + defer user.deinit(); + + user.info.full_name = body.full_name; + user.info.birthday = body.birthday; + + try user.sync(); + } else { + return error.UnknownSession; + } +} |