From 967be9e750221ab2ab783f95df79bb26d290a45e Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:07:58 +0200 Subject: add: added projects --- idvoc-2025/CommentsEngine/redisc/redis.go | 83 +++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 idvoc-2025/CommentsEngine/redisc/redis.go (limited to 'idvoc-2025/CommentsEngine/redisc') diff --git a/idvoc-2025/CommentsEngine/redisc/redis.go b/idvoc-2025/CommentsEngine/redisc/redis.go new file mode 100644 index 0000000..88d9a08 --- /dev/null +++ b/idvoc-2025/CommentsEngine/redisc/redis.go @@ -0,0 +1,83 @@ +package redisc + +import ( + "context" + "encoding/json" + "github.com/redis/go-redis/v9" + "log" + "strconv" +) + +var Client *redis.Client + +func getIndex(ctx context.Context) (int, error) { + val, err := Client.Get(ctx, "index").Result() + var i int + if err != nil && err != redis.Nil { + log.Printf("Problem with redis: %s", err) + return -1, err + } else if err == redis.Nil { + i = 0 + } else { + i, err = strconv.Atoi(val) + if err != nil { + log.Printf("Problem in stored data: %s", err) + return -1, err + } + } + return i, nil +} + +func getIndexAndBump(ctx context.Context) (int, error) { + i, err := getIndex(ctx) + if err != nil { + return -1, err + } + err = Client.Set(ctx, "index", strconv.Itoa(i+1), 0).Err() + if err != nil { + log.Printf("Problem with redis while trying to store data: %s", err) + return -1, err + } + return i + 1, err +} + +func StoreComment(comment string) (int, error) { + ctx := context.Background() + i, err := getIndexAndBump(ctx) + if err != nil { + return -1, err + } + err = Client.Set(ctx, "comment"+strconv.Itoa(i), comment, 0).Err() + if err != nil { + log.Printf("Problem with redis while trying to store data: %s", err) + return -1, err + } + return i, err +} + +func GetLatestComments() (string, error) { + messages := make([]string, 0) + ctx := context.Background() + index, err := getIndex(ctx) + if err != nil { + return "", err + } + for i := 0; i < 10; i++ { + if index-i <= 0 { + break + } + val, err := Client.Get(ctx, "comment"+strconv.Itoa(index-i)).Result() + if err != nil && err != redis.Nil { + log.Printf("Problem with redis while trying to retrieve data: %s", err) + return "", err + } else if err == redis.Nil { + continue + } + messages = append(messages, val) + } + msg, err := json.Marshal(messages) + if err != nil { + log.Fatalf("Json issue") + } + return string(msg), err +} -- cgit v1.2.3