From 46ed94f273930ec2842ca4e5c37624c1da584fc4 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 6 Jul 2026 23:01:52 +0200 Subject: added TYPE command --- handlers.go | 28 ++++++++++++++++++++++++++++ main.go | 1 + 2 files changed, 29 insertions(+) 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 diff --git a/main.go b/main.go index 8a73770..cbdae4b 100644 --- a/main.go +++ b/main.go @@ -34,6 +34,7 @@ var commandRegistry = map[string]handlerFunc{ "HGETALL": handleHgetall, "HKEYS": handleHkeys, "HVALUES": handleHvalues, + "TYPE": handleType, } func main() { -- cgit v1.2.3