summaryrefslogtreecommitdiff
path: root/backend/src/Redis/Connection.zig
diff options
context:
space:
mode:
authorphyscik <mynameisgennadiy@vk.com>2026-04-17 21:55:25 +0500
committerphyscik <mynameisgennadiy@vk.com>2026-04-17 21:55:25 +0500
commitec8a21afd098f636cd1a3b1cffd62f0a4d98700f (patch)
treee7d0003836c20f746e568f1608bc3a557e315c6e /backend/src/Redis/Connection.zig
parent550e0183cf953932fa5c236ad8389febdc899c62 (diff)
null handling fix + ttl
Diffstat (limited to 'backend/src/Redis/Connection.zig')
-rw-r--r--backend/src/Redis/Connection.zig24
1 files changed, 16 insertions, 8 deletions
diff --git a/backend/src/Redis/Connection.zig b/backend/src/Redis/Connection.zig
index bde187b..b20903d 100644
--- a/backend/src/Redis/Connection.zig
+++ b/backend/src/Redis/Connection.zig
@@ -23,20 +23,28 @@ pub fn Disconnect() void {
pub const Message = struct {
Key: []const u8,
- Value: []const u8
+ Value: []const u8,
+ SecondsToLive: u16
};
pub fn WriteToTopic(topic: []const u8, message: Message) !void {
- _ = redis.redisCommand(connection, "SET %s:%s %s",
+ _ = redis.redisCommand(connection, "SET %s:%s %s EX %d",
topic.ptr,
message.Key.ptr,
- message.Value.ptr);
+ message.Value.ptr,
+ message.SecondsToLive);
}
-pub fn ReadFromTopic(topic: []const u8, Key: []const u8) !?[]const u8 {
- const resp: *redis.redisReply = @alignCast(@ptrCast(redis.redisCommand(connection, "GET %s:%s",
- topic.ptr,
- Key.ptr)));
+pub fn ReadFromTopic(topic: []const u8, Key: []const u8) ?[]const u8 {
+ const raw = redis.redisCommand(connection, "GET %s:%s",
+ topic.ptr,
+ Key.ptr);
+ if (raw == null) {
+ return null;
+ }
+ const resp: *redis.redisReply = @alignCast(@ptrCast(raw));
+ if (resp.type != redis.REDIS_REPLY_STRING) {
+ return null;
+ }
return std.mem.span(resp.str);
}
-