feat(NIP-01): Implement limit
This was quickly sneaked in by fiatjaf per my request[0], it makes many queries more efficient and allows for paging when combined with until. It is a bit weird to have multiple limits on each filter... for now we just choose any or the last limit seen. [0]: https://github.com/nostr-protocol/nips/commit/a4aea5337fe6b93e55f9dae1974ead962c1997e8 Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
committed by
Greg Heartsfield
parent
9b351aab9b
commit
4ad483090e
@@ -31,6 +31,8 @@ pub struct ReqFilter {
|
||||
pub until: Option<u64>,
|
||||
/// List of author public keys
|
||||
pub authors: Option<Vec<String>>,
|
||||
/// Limit number of results
|
||||
pub limit: Option<u32>,
|
||||
/// Set of tags
|
||||
#[serde(skip)]
|
||||
pub tags: Option<HashMap<String, HashSet<String>>>,
|
||||
@@ -54,6 +56,7 @@ impl<'de> Deserialize<'de> for ReqFilter {
|
||||
since: None,
|
||||
until: None,
|
||||
authors: None,
|
||||
limit: None,
|
||||
tags: None,
|
||||
};
|
||||
let mut ts = None;
|
||||
@@ -68,6 +71,8 @@ impl<'de> Deserialize<'de> for ReqFilter {
|
||||
rf.since = Deserialize::deserialize(val).ok();
|
||||
} else if key == "until" {
|
||||
rf.until = Deserialize::deserialize(val).ok();
|
||||
} else if key == "limit" {
|
||||
rf.limit = Deserialize::deserialize(val).ok();
|
||||
} else if key == "authors" {
|
||||
rf.authors = Deserialize::deserialize(val).ok();
|
||||
} else if key.starts_with('#') && key.len() > 1 && val.is_array() {
|
||||
|
||||
Reference in New Issue
Block a user