feat: integrate nostrdb relay indexing
- Upgrade `nostrdb` to v0.6.1 with relay metadata support - Switch to `nostr::RelayUrl` for typed relay URLs - Use `process_event_with()` to pass relay info during ingestion - Update `Relay`, `RelayPool`, and unknown ID logic accordingly This enables richer indexing with relay provenance in events. Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
@@ -299,13 +299,23 @@ fn process_message(damus: &mut Damus, ctx: &mut AppContext<'_>, relay: &str, msg
|
||||
match relay {
|
||||
PoolRelay::Websocket(_) => {
|
||||
//info!("processing event {}", event);
|
||||
if let Err(err) = ctx.ndb.process_event(ev) {
|
||||
if let Err(err) = ctx.ndb.process_event_with(
|
||||
ev,
|
||||
nostrdb::IngestMetadata::new()
|
||||
.client(false)
|
||||
.relay(relay.url()),
|
||||
) {
|
||||
error!("error processing event {ev}: {err}");
|
||||
}
|
||||
}
|
||||
PoolRelay::Multicast(_) => {
|
||||
// multicast events are client events
|
||||
if let Err(err) = ctx.ndb.process_client_event(ev) {
|
||||
if let Err(err) = ctx.ndb.process_event_with(
|
||||
ev,
|
||||
nostrdb::IngestMetadata::new()
|
||||
.client(true)
|
||||
.relay(relay.url()),
|
||||
) {
|
||||
error!("error processing multicast event {ev}: {err}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,7 +119,10 @@ impl ProfileAction {
|
||||
ProfileAction::SaveChanges(changes) => {
|
||||
let raw_msg = format!("[\"EVENT\",{}]", changes.to_note().json().unwrap());
|
||||
|
||||
let _ = ndb.process_client_event(raw_msg.as_str());
|
||||
let _ = ndb.process_event_with(
|
||||
raw_msg.as_str(),
|
||||
nostrdb::IngestMetadata::new().client(true),
|
||||
);
|
||||
let _ = state_map.remove_entry(&changes.kp.pubkey);
|
||||
|
||||
info!("sending {}", raw_msg);
|
||||
|
||||
@@ -456,11 +456,14 @@ impl TimelineKind {
|
||||
.limit(default_limit())
|
||||
.build()]),
|
||||
|
||||
TimelineKind::Hashtag(hashtag) => FilterState::ready(vec![Filter::new()
|
||||
.kinds([1])
|
||||
.limit(filter::default_limit())
|
||||
.tags([hashtag.to_lowercase()], 't')
|
||||
.build()]),
|
||||
TimelineKind::Hashtag(hashtag) => {
|
||||
let url: &str = &hashtag.to_lowercase();
|
||||
FilterState::ready(vec![Filter::new()
|
||||
.kinds([1])
|
||||
.limit(filter::default_limit())
|
||||
.tags([url], 't')
|
||||
.build()])
|
||||
}
|
||||
|
||||
TimelineKind::Algo(algo_timeline) => match algo_timeline {
|
||||
AlgoTimeline::LastPerPubkey(list_k) => match list_k {
|
||||
|
||||
@@ -244,10 +244,12 @@ impl Timeline {
|
||||
}
|
||||
|
||||
pub fn hashtag(hashtag: String) -> Self {
|
||||
let hashtag = hashtag.to_lowercase();
|
||||
let htag: &str = &hashtag;
|
||||
let filter = Filter::new()
|
||||
.kinds([1])
|
||||
.limit(filter::default_limit())
|
||||
.tags([hashtag.to_lowercase()], 't')
|
||||
.tags([htag], 't')
|
||||
.build();
|
||||
|
||||
Timeline::new(
|
||||
|
||||
Reference in New Issue
Block a user