summaryrefslogtreecommitdiff
path: root/backend
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
parent550e0183cf953932fa5c236ad8389febdc899c62 (diff)
null handling fix + ttl
Diffstat (limited to 'backend')
-rw-r--r--backend/build.zig.zon4
-rw-r--r--backend/src/Redis/Connection.zig24
-rw-r--r--backend/src/main.zig3
3 files changed, 18 insertions, 13 deletions
diff --git a/backend/build.zig.zon b/backend/build.zig.zon
index b1423b1..911bb3d 100644
--- a/backend/build.zig.zon
+++ b/backend/build.zig.zon
@@ -44,10 +44,6 @@
.url = "git+https://github.com/zigster64/dotenv.zig?ref=main#7d50f9fe0ce223d94d180d5a5a49fe0df5bc3743",
.hash = "dotenv-0.1.0-Q9TxeuEMAADw6cHl9uKbjwunS0PlYYc1yw9Ol82TwAAm",
},
- .okredis = .{
- .url = "git+https://github.com/kristoff-it/zig-okredis?ref=master#f00a50311e5fcc5a688fc027bd0a7ebbe8e2f0cc",
- .hash = "okredis-0.1.0-Cg726sgHBAClOCW_xaaqoS6m_uyiw3iD9Qj20AAzGcTL",
- },
},
.paths = .{
"build.zig",
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);
}
-
diff --git a/backend/src/main.zig b/backend/src/main.zig
index d1fbde2..9c4351f 100644
--- a/backend/src/main.zig
+++ b/backend/src/main.zig
@@ -27,9 +27,10 @@ pub fn main() !void {
try redis.WriteToTopic("test", redis.Message {
.Key = "xdd",
.Value = "ddx",
+ .SecondsToLive = 10,
});
- std.debug.print("redis response: {s}\n", .{try redis.ReadFromTopic("test", "xdd") orelse "not found"});
+ std.debug.print("redis response: {s}\n", .{redis.ReadFromTopic("test", "xdd") orelse "not found"});
var router = try server.router(.{});
router.get("/", index, .{});