diff options
Diffstat (limited to 'handlers.go')
| -rw-r--r-- | handlers.go | 24 |
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] |
