summaryrefslogtreecommitdiffstats
path: root/src/commands/sort.json
diff options
context:
space:
mode:
Diffstat (limited to 'src/commands/sort.json')
-rw-r--r--src/commands/sort.json162
1 files changed, 162 insertions, 0 deletions
diff --git a/src/commands/sort.json b/src/commands/sort.json
new file mode 100644
index 0000000..d5f6511
--- /dev/null
+++ b/src/commands/sort.json
@@ -0,0 +1,162 @@
+{
+ "SORT": {
+ "summary": "Sorts the elements in a list, a set, or a sorted set, optionally storing the result.",
+ "complexity": "O(N+M*log(M)) where N is the number of elements in the list or set to sort, and M the number of returned elements. When the elements are not sorted, complexity is O(N).",
+ "group": "generic",
+ "since": "1.0.0",
+ "arity": -2,
+ "function": "sortCommand",
+ "get_keys_function": "sortGetKeys",
+ "command_flags": [
+ "WRITE",
+ "DENYOOM"
+ ],
+ "acl_categories": [
+ "SET",
+ "SORTEDSET",
+ "LIST",
+ "DANGEROUS"
+ ],
+ "key_specs": [
+ {
+ "flags": [
+ "RO",
+ "ACCESS"
+ ],
+ "begin_search": {
+ "index": {
+ "pos": 1
+ }
+ },
+ "find_keys": {
+ "range": {
+ "lastkey": 0,
+ "step": 1,
+ "limit": 0
+ }
+ }
+ },
+ {
+ "notes": "For the optional BY/GET keyword. It is marked 'unknown' because the key names derive from the content of the key we sort",
+ "flags": [
+ "RO",
+ "ACCESS"
+ ],
+ "begin_search": {
+ "unknown": null
+ },
+ "find_keys": {
+ "unknown": null
+ }
+ },
+ {
+ "notes": "For the optional STORE keyword. It is marked 'unknown' because the keyword can appear anywhere in the argument array",
+ "flags": [
+ "OW",
+ "UPDATE"
+ ],
+ "begin_search": {
+ "unknown": null
+ },
+ "find_keys": {
+ "unknown": null
+ }
+ }
+ ],
+ "arguments": [
+ {
+ "name": "key",
+ "type": "key",
+ "key_spec_index": 0
+ },
+ {
+ "token": "BY",
+ "name": "by-pattern",
+ "display": "pattern",
+ "type": "pattern",
+ "key_spec_index": 1,
+ "optional": true
+ },
+ {
+ "token": "LIMIT",
+ "name": "limit",
+ "type": "block",
+ "optional": true,
+ "arguments": [
+ {
+ "name": "offset",
+ "type": "integer"
+ },
+ {
+ "name": "count",
+ "type": "integer"
+ }
+ ]
+ },
+ {
+ "token": "GET",
+ "name": "get-pattern",
+ "display": "pattern",
+ "key_spec_index": 1,
+ "type": "pattern",
+ "optional": true,
+ "multiple": true,
+ "multiple_token": true
+ },
+ {
+ "name": "order",
+ "type": "oneof",
+ "optional": true,
+ "arguments": [
+ {
+ "name": "asc",
+ "type": "pure-token",
+ "token": "ASC"
+ },
+ {
+ "name": "desc",
+ "type": "pure-token",
+ "token": "DESC"
+ }
+ ]
+ },
+ {
+ "name": "sorting",
+ "token": "ALPHA",
+ "type": "pure-token",
+ "optional": true
+ },
+ {
+ "token": "STORE",
+ "name": "destination",
+ "type": "key",
+ "key_spec_index": 2,
+ "optional": true
+ }
+ ],
+ "reply_schema": {
+ "oneOf": [
+ {
+ "description": "when the store option is specified the command returns the number of sorted elements in the destination list",
+ "type": "integer",
+ "minimum": 0
+ },
+ {
+ "description": "when not passing the store option the command returns a list of sorted elements",
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "description": "GET option is specified, but no object was found",
+ "type": "null"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+}