From 10f85640c03157acd30470d668447245b8a88e11 Mon Sep 17 00:00:00 2001 From: tidwall Date: Tue, 8 Mar 2022 15:58:23 -0700 Subject: [PATCH] Added option to "not found" for DEL --- core/commands.json | 6 ++++++ core/commands_gen.go | 6 ++++++ internal/server/crud.go | 17 +++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/core/commands.json b/core/commands.json index aa1c8d12..aa11fefc 100644 --- a/core/commands.json +++ b/core/commands.json @@ -265,6 +265,12 @@ { "name": "id", "type": "string" + }, + { + "command": "ERRON404", + "name": [], + "type": [], + "optional": true } ], "since": "1.0.0", diff --git a/core/commands_gen.go b/core/commands_gen.go index 02b3cf50..2bf55886 100644 --- a/core/commands_gen.go +++ b/core/commands_gen.go @@ -431,6 +431,12 @@ var commandsJSON = `{ { "name": "id", "type": "string" + }, + { + "command": "ERRON404", + "name": [], + "type": [], + "optional": true } ], "since": "1.0.0", diff --git a/internal/server/crud.go b/internal/server/crud.go index 86561ad3..08bcb164 100644 --- a/internal/server/crud.go +++ b/internal/server/crud.go @@ -290,6 +290,17 @@ func (s *Server) cmdDel(msg *Message) (res resp.Value, d commandDetails, err err err = errInvalidNumberOfArguments return } + erron404 := false + if len(vs) > 0 { + _, arg, ok := tokenval(vs) + if ok && strings.ToLower(arg) == "erron404" { + erron404 = true + vs = vs[1:] + } else { + err = errInvalidArgument(arg) + return + } + } if len(vs) != 0 { err = errInvalidNumberOfArguments return @@ -303,7 +314,13 @@ func (s *Server) cmdDel(msg *Message) (res resp.Value, d commandDetails, err err s.deleteCol(d.key) } found = true + } else if erron404 { + err = errIDNotFound + return } + } else if erron404 { + err = errKeyNotFound + return } s.groupDisconnectObject(d.key, d.id) d.command = "del"