feat: allow author and event id prefix search
This is an experimental non-NIP feature that allows a subscription filter to include a prefix for authors and events.
This commit is contained in:
+11
-17
@@ -145,6 +145,7 @@ impl Event {
|
||||
return false;
|
||||
}
|
||||
// * validate the message digest (sig) using the pubkey & computed sha256 message hash.
|
||||
|
||||
let sig = schnorr::Signature::from_str(&self.sig).unwrap();
|
||||
if let Ok(msg) = secp256k1::Message::from_slice(digest.as_ref()) {
|
||||
let pubkey = XOnlyPublicKey::from_str(&self.pubkey).unwrap();
|
||||
@@ -193,21 +194,6 @@ impl Event {
|
||||
serde_json::Value::Array(tags)
|
||||
}
|
||||
|
||||
/// Generic tag match
|
||||
// TODO: is this used anywhere?
|
||||
pub fn generic_tag_match(&self, tagname: &str, tagvalue: &str) -> bool {
|
||||
match &self.tagidx {
|
||||
Some(idx) => {
|
||||
// get the set of values for this tag
|
||||
match idx.get(tagname) {
|
||||
Some(valset) => valset.contains(tagvalue),
|
||||
None => false,
|
||||
}
|
||||
}
|
||||
None => false,
|
||||
}
|
||||
}
|
||||
|
||||
/// Determine if the given tag and value set intersect with tags in this event.
|
||||
pub fn generic_tag_val_intersect(&self, tagname: &str, check: &HashSet<String>) -> bool {
|
||||
match &self.tagidx {
|
||||
@@ -258,7 +244,8 @@ mod tests {
|
||||
#[test]
|
||||
fn empty_event_tag_match() -> Result<()> {
|
||||
let event = simple_event();
|
||||
assert!(!event.event_tag_match("foo"));
|
||||
assert!(!event
|
||||
.generic_tag_val_intersect("e", &HashSet::from(["foo".to_owned(), "bar".to_owned()])));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -266,7 +253,14 @@ mod tests {
|
||||
fn single_event_tag_match() -> Result<()> {
|
||||
let mut event = simple_event();
|
||||
event.tags = vec![vec!["e".to_owned(), "foo".to_owned()]];
|
||||
assert!(event.event_tag_match("foo"));
|
||||
event.build_index();
|
||||
assert_eq!(
|
||||
event.generic_tag_val_intersect(
|
||||
"e",
|
||||
&HashSet::from(["foo".to_owned(), "bar".to_owned()])
|
||||
),
|
||||
true
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user