From 8126486c8e488a6f541fb8b3bc65156fa983c489 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 9 Jul 2026 16:51:26 +0200 Subject: added RENAME command --- handlers.go | 24 ++++++++++++++++++++++++ main.go | 1 + 2 files changed, 25 insertions(+) diff --git a/handlers.go b/handlers.go index 0b5267c..105bca0 100644 --- a/handlers.go +++ b/handlers.go @@ -197,6 +197,30 @@ func handleFlushall(conn net.Conn, args []string) { }) conn.Write(serializeRESP(result)) } + +func handleRename(conn net.Conn, args []string){ + if len(args) != 3 { + err := errors.New("wrong number of arguments for 'RENAME'") + conn.Write(serializeRESP(err)) + return + } + keys := args[1:] + + result := db.ExecuteMulti(keys,func(shards []*Shard)interface{}{ + item, exists := db.getShard(keys[0]).data[keys[0]] + if !exists { + + return errors.New("no such key") + } + + db.getShard(keys[1]).data[keys[1]] = item + delete(db.getShard(keys[0]).data, keys[0]) + + return SimpleString("OK") + }) + conn.Write(serializeRESP(result)) +} + /* func handleRpush(conn net.Conn, args []string) { key := args[1] diff --git a/main.go b/main.go index cd9cb7a..2364d02 100644 --- a/main.go +++ b/main.go @@ -23,6 +23,7 @@ var commandRegistry = map[string]handlerFunc{ "INCR": handleIncr, "DECR": handleDecr, "PING": handlePing, + "RENAME": handleRename, /* "FLUSHALL": handleFlushall, "RPUSH": handleRpush, "LPUSH": handleLpush, -- cgit v1.2.3