Skip to content

Commit e36dc9e

Browse files
authored
Merge pull request #8 from BitcreditProtocol/cleanup-replaceable-events
Cleanup replaceable events
2 parents 2cb4c64 + 955482e commit e36dc9e

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

src/postgres.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use deadpool_postgres::Pool;
33
use deadpool_postgres::{Manager, ManagerConfig, RecyclingMethod};
44
use nostr::event::*;
55
use nostr::filter::Filter;
6+
use nostr::types::Timestamp;
67
use nostr_database::*;
78
use prelude::BoxedFuture;
89
use tokio_postgres::NoTls;
@@ -109,7 +110,28 @@ impl NostrDatabase for NostrPostgres {
109110
&'a self,
110111
event: &'a Event,
111112
) -> BoxedFuture<'a, Result<SaveEventStatus, DatabaseError>> {
112-
Box::pin(async move { self.save(EventDataDb::try_from(event)?).await })
113+
Box::pin(async move {
114+
let result = self.save(EventDataDb::try_from(event)?).await;
115+
let until = if event.created_at.is_zero() {
116+
event.created_at
117+
} else {
118+
Timestamp::from_secs(event.created_at.as_u64() - 1)
119+
};
120+
if event.kind.is_replaceable()
121+
&& matches!(result, Ok(SaveEventStatus::Success))
122+
&& let Err(e) = self
123+
.delete(
124+
Filter::new()
125+
.author(event.pubkey)
126+
.kind(event.kind)
127+
.until(until),
128+
)
129+
.await
130+
{
131+
warn!("Failed to delete old replaceable events: {e}");
132+
}
133+
result
134+
})
113135
}
114136

115137
/// Check event status by ID

0 commit comments

Comments
 (0)