diff options
Diffstat (limited to 'handlers.go')
| -rw-r--r-- | handlers.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/handlers.go b/handlers.go index aacabe5..5bf16a8 100644 --- a/handlers.go +++ b/handlers.go @@ -543,4 +543,32 @@ func handleHvalues(conn net.Conn, args []string){ result = append(result, value) } conn.Write(serializeRESP(result)) +} + +func handleType(conn net.Conn, args []string){ + if len(args) != 2 { + conn.Write(serializeRESP(errors.New("ERR wrong number of arguments for 'TYPE'"))) + return + } + key := args[1] + + db.mu.Lock() + defer db.mu.Unlock() + + item, exists := db.data[key] + if !exists { + conn.Write(serializeRESP(SimpleString("none"))) + return + } + + switch item.Value.(type) { + case string: + conn.Write(serializeRESP(SimpleString("string"))) + case []string: + conn.Write(serializeRESP(SimpleString("list"))) + case map[string]string: + conn.Write(serializeRESP(SimpleString("hash"))) + default: + conn.Write(serializeRESP(SimpleString("unknown"))) + } }
\ No newline at end of file |
