K2V #293

Merged
lx merged 68 commits from k2v into main 2022-05-10 11:16:58 +00:00
2 changed files with 14 additions and 4 deletions
Showing only changes of commit d3a9075cd3 - Show all commits

View file

@ -342,12 +342,13 @@ HTTP/1.1 204 NO CONTENT
Lists all partition keys in the bucket for which some triplets exist, and gives Lists all partition keys in the bucket for which some triplets exist, and gives
for each the number of triplets (or an approximation thereof, this value is for each the number of triplets (or an approximation thereof, this value is
asynchronously updated, and thus eventually consistent). asynchronously updated, and thus eventually consistent).
Query parameters: Query parameters:
| name | default value | meaning | | name | default value | meaning |
| - | - | - | | - | - | - |
| `prefix` | `null` | Restrict listing to partition keys that start with this prefix |
| `start` | `null` | First partition key to list, in lexicographical order | | `start` | `null` | First partition key to list, in lexicographical order |
| `end` | `null` | Last partition key to list (excluded) | | `end` | `null` | Last partition key to list (excluded) |
| `limit` | `null` | Maximum number of partition keys to list | | `limit` | `null` | Maximum number of partition keys to list |
@ -383,6 +384,7 @@ Example response:
HTTP/1.1 200 OK HTTP/1.1 200 OK
{ {
prefix: null,
start: null, start: null,
end: null, end: null,
limit: null, limit: null,
@ -452,6 +454,7 @@ JSON struct with the following fields:
| name | default value | meaning | | name | default value | meaning |
| - | - | - | | - | - | - |
| `partitionKey` | **mandatory** | The partition key in which to search | | `partitionKey` | **mandatory** | The partition key in which to search |
| `prefix` | `null` | Restrict items to list to those whose sort keys start with this prefix |
| `start` | `null` | The sort key of the first item to read | | `start` | `null` | The sort key of the first item to read |
| `end` | `null` | The sort key of the last item to read (excluded) | | `end` | `null` | The sort key of the last item to read (excluded) |
| `limit` | `null` | The maximum number of items to return | | `limit` | `null` | The maximum number of items to return |
@ -461,7 +464,7 @@ JSON struct with the following fields:
For each of the searches, triplets are listed and returned separately. The For each of the searches, triplets are listed and returned separately. The
semantics of `start`, `end` and `limit` is the same as for ReadIndex. The semantics of `prefix`, `start`, `end` and `limit` are the same as for ReadIndex. The
additionnal parameter `singleItem` allows to get a single item, whose sort key additionnal parameter `singleItem` allows to get a single item, whose sort key
is the one given in `start`. Parameters `conflictsOnly` and `tombstones` is the one given in `start`. Parameters `conflictsOnly` and `tombstones`
control additional filters on the items that are returned. control additional filters on the items that are returned.
@ -519,6 +522,7 @@ HTTP/1.1 200 OK
[ [
{ {
partitionKey: "mailboxes", partitionKey: "mailboxes",
prefix: null,
start: null, start: null,
end: null, end: null,
limit: null, limit: null,
@ -535,6 +539,7 @@ HTTP/1.1 200 OK
}, },
{ {
partitionKey: "mailbox::INBOX", partitionKey: "mailbox::INBOX",
prefix: null,
start: "001892831", start: "001892831",
end: null, end: null,
limit: 3, limit: 3,
@ -551,6 +556,7 @@ HTTP/1.1 200 OK
}, },
{ {
partitionKey: "keys", partitionKey: "keys",
prefix: null,
start: "0", start: "0",
end: null, end: null,
conflictsOnly: false, conflictsOnly: false,
@ -572,7 +578,7 @@ HTTP/1.1 200 OK
Batch deletion of triplets. The request format is the same for `POST Batch deletion of triplets. The request format is the same for `POST
/<bucket>?search` to indicate items or range of items, except that here they /<bucket>?search` to indicate items or range of items, except that here they
are deleted instead of returned, but only the fields `partitionKey`, `start`, are deleted instead of returned, but only the fields `partitionKey`, `prefix`, `start`,
`end`, and `singleItem` are supported. Causality information is not given by `end`, and `singleItem` are supported. Causality information is not given by
the user: this request will internally list all triplets and write deletion the user: this request will internally list all triplets and write deletion
markers that supersede all of the versions that have been read. markers that supersede all of the versions that have been read.
@ -605,6 +611,7 @@ HTTP/1.1 200 OK
[ [
{ {
partitionKey: "mailbox:OldMailbox", partitionKey: "mailbox:OldMailbox",
prefix: null,
start: null, start: null,
end: null, end: null,
singleItem: false, singleItem: false,
@ -612,6 +619,7 @@ HTTP/1.1 200 OK
}, },
{ {
partitionKey: "mailbox:INBOX", partitionKey: "mailbox:INBOX",
prefix: null,
start: "0018928321", start: "0018928321",
end: null, end: null,
singleItem: true, singleItem: true,

View file

@ -34,6 +34,7 @@ pub enum Endpoint {
ReadBatch { ReadBatch {
}, },
ReadIndex { ReadIndex {
prefix: Option<String>,
start: Option<String>, start: Option<String>,
end: Option<String>, end: Option<String>,
limit: Option<u64>, limit: Option<u64>,
@ -97,7 +98,7 @@ impl Endpoint {
EMPTY => ReadItem (query::sort_key), EMPTY => ReadItem (query::sort_key),
], ],
no_key: [ no_key: [
EMPTY => ReadIndex (query_opt::start, query_opt::end, opt_parse::limit), EMPTY => ReadIndex (query_opt::prefix, query_opt::start, query_opt::end, opt_parse::limit),
] ]
} }
} }
@ -214,6 +215,7 @@ impl Endpoint {
// parameter name => struct field // parameter name => struct field
generateQueryParameters! { generateQueryParameters! {
"prefix" => prefix,
"start" => start, "start" => start,
"causality_token" => causality_token, "causality_token" => causality_token,
"end" => end, "end" => end,