mirror of
https://github.com/mikedilger/gossip.git
synced 2024-09-29 08:21:47 +00:00
Storage::get_parameterized_replaceable_event()
This commit is contained in:
parent
c0451cd757
commit
e1d6b18c22
@ -15,7 +15,8 @@ use lmdb::{
|
||||
Transaction, WriteFlags,
|
||||
};
|
||||
use nostr_types::{
|
||||
EncryptedPrivateKey, Event, EventKind, Id, MilliSatoshi, PublicKey, RelayUrl, Unixtime,
|
||||
EncryptedPrivateKey, Event, EventAddr, EventKind, Id, MilliSatoshi, PublicKey, RelayUrl,
|
||||
Unixtime,
|
||||
};
|
||||
use speedy::{Readable, Writable};
|
||||
use std::collections::{HashMap, HashSet};
|
||||
@ -936,6 +937,29 @@ impl Storage {
|
||||
Ok(true)
|
||||
}
|
||||
|
||||
pub fn get_parameterized_replaceable_event(
|
||||
&self,
|
||||
event_addr: &EventAddr,
|
||||
) -> Result<Option<Event>, Error> {
|
||||
if !event_addr.kind.is_parameterized_replaceable() {
|
||||
return Err(ErrorKind::General(
|
||||
"Invalid EventAddr, kind is not parameterized replaceable.".to_owned(),
|
||||
)
|
||||
.into());
|
||||
}
|
||||
|
||||
let mut events = self.find_events(
|
||||
&[event_addr.kind],
|
||||
&[event_addr.author],
|
||||
None, // any time
|
||||
|e| e.parameter().as_ref() == Some(&event_addr.d),
|
||||
true, // sorted in reverse time order
|
||||
)?;
|
||||
|
||||
let maybe_event = events.drain(..).take(1).next();
|
||||
Ok(maybe_event)
|
||||
}
|
||||
|
||||
pub fn replace_parameterized_event<'a>(
|
||||
&'a self,
|
||||
event: &Event,
|
||||
|
Loading…
Reference in New Issue
Block a user