summaryrefslogtreecommitdiff
path: root/backend/src
diff options
context:
space:
mode:
Diffstat (limited to 'backend/src')
-rw-r--r--backend/src/Redis/Connection.zig42
-rw-r--r--backend/src/main.zig11
2 files changed, 53 insertions, 0 deletions
diff --git a/backend/src/Redis/Connection.zig b/backend/src/Redis/Connection.zig
new file mode 100644
index 0000000..bde187b
--- /dev/null
+++ b/backend/src/Redis/Connection.zig
@@ -0,0 +1,42 @@
+const std = @import("std");
+const redis = @cImport(
+ @cInclude("hiredis/hiredis.h")
+ );
+
+var connection: ?*redis.redisContext = undefined;
+const addr: [*]const u8 = "127.0.0.1";
+const port: u16 = 6379;
+
+pub fn Connect() !void {
+ connection = redis.redisConnect(addr, port);
+ if (connection == null or connection.?.err != 0) {
+ if (connection != null) {
+ @panic(&connection.?.errstr);
+ }
+ @panic("The redis connection failed: general error");
+ }
+}
+
+pub fn Disconnect() void {
+ redis.redisFree(connection);
+}
+
+pub const Message = struct {
+ Key: []const u8,
+ Value: []const u8
+};
+
+pub fn WriteToTopic(topic: []const u8, message: Message) !void {
+ _ = redis.redisCommand(connection, "SET %s:%s %s",
+ topic.ptr,
+ message.Key.ptr,
+ message.Value.ptr);
+}
+
+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)));
+ return std.mem.span(resp.str);
+}
+
diff --git a/backend/src/main.zig b/backend/src/main.zig
index db48a38..d1fbde2 100644
--- a/backend/src/main.zig
+++ b/backend/src/main.zig
@@ -3,6 +3,7 @@ const backend = @import("backend");
const httpz = @import("httpz");
const db = @import("Database/Connection.zig");
const handler = @import("Handler.zig");
+const redis = @import("Redis/Connection.zig");
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
@@ -20,6 +21,16 @@ pub fn main() !void {
server.deinit();
}
+ try redis.Connect();
+ defer redis.Disconnect();
+
+ try redis.WriteToTopic("test", redis.Message {
+ .Key = "xdd",
+ .Value = "ddx",
+ });
+
+ std.debug.print("redis response: {s}\n", .{try redis.ReadFromTopic("test", "xdd") orelse "not found"});
+
var router = try server.router(.{});
router.get("/", index, .{});