aboutsummaryrefslogtreecommitdiff
path: root/handlers.go
diff options
context:
space:
mode:
authoralex <[email protected]>2026-07-09 16:51:26 +0200
committeralex <[email protected]>2026-07-09 16:51:26 +0200
commit8126486c8e488a6f541fb8b3bc65156fa983c489 (patch)
tree4207059a31b72a00955b7df693598549f35e1d1f /handlers.go
parent6aebb5bb1d35016bc8e3bed04e971614898cb6ff (diff)
downloadredis-clone-8126486c8e488a6f541fb8b3bc65156fa983c489.tar.xz
redis-clone-8126486c8e488a6f541fb8b3bc65156fa983c489.zip
added RENAME command
Diffstat (limited to 'handlers.go')
-rw-r--r--handlers.go24
1 files changed, 24 insertions, 0 deletions
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]