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"