mirror of
https://github.com/mikedilger/gossip.git
synced 2024-09-19 11:43:43 +00:00
better person_relay related code
This commit is contained in:
parent
4190cee3d1
commit
876e9e1516
@ -67,7 +67,10 @@ impl DbPersonRelay {
|
|||||||
last_suggested_nip05, last_suggested_bytag \
|
last_suggested_nip05, last_suggested_bytag \
|
||||||
FROM person_relay \
|
FROM person_relay \
|
||||||
INNER JOIN relay ON person_relay.relay=relay.url \
|
INNER JOIN relay ON person_relay.relay=relay.url \
|
||||||
WHERE person IN ({}) ORDER BY person, relay.rank DESC",
|
WHERE person IN ({}) ORDER BY person, relay.rank DESC, \
|
||||||
|
last_suggested_nip23 DESC, last_suggested_kind3 DESC, \
|
||||||
|
last_suggested_nip05 DESC, last_suggested_kind2 DESC, \
|
||||||
|
last_fetched DESC, last_suggested_bytag DESC",
|
||||||
repeat_vars(pubkeys.len())
|
repeat_vars(pubkeys.len())
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -330,32 +333,32 @@ impl DbPersonRelay {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
pub async fn get_best_relay(pubkey: PublicKeyHex) -> Result<Option<Url>, Error> {
|
pub async fn get_best_relays(pubkey: PublicKeyHex) -> Result<Vec<Url>, Error> {
|
||||||
// This is the ranking we are using. There might be reasons
|
// This is the ranking we are using. There might be reasons
|
||||||
// for ranking differently:
|
// for ranking differently:
|
||||||
// nip23 > kind3 > nip05 > kind2 > fetched > bytag
|
// nip23 > kind3 > nip05 > kind2 > fetched > bytag
|
||||||
|
|
||||||
let sql = "SELECT relay FROM person_relay WHERE person=? \
|
let sql = "SELECT relay FROM person_relay WHERE person=? \
|
||||||
ORDER BY last_suggested_nip23 DESC, last_suggested_kind3 DESC, \
|
ORDER BY last_suggested_nip23 DESC, last_suggested_kind3 DESC, \
|
||||||
last_suggested_nip05 DESC, last_suggested_kind2 DESC, \
|
last_suggested_nip05 DESC, last_suggested_kind2 DESC, \
|
||||||
last_fetched DESC, last_suggested_bytag DESC";
|
last_fetched DESC, last_suggested_bytag DESC";
|
||||||
|
|
||||||
let maybe_relay_result: Result<Option<Url>, Error> = spawn_blocking(move || {
|
let relays: Result<Vec<Url>, Error> = spawn_blocking(move || {
|
||||||
let maybe_db = GLOBALS.db.blocking_lock();
|
let maybe_db = GLOBALS.db.blocking_lock();
|
||||||
let db = maybe_db.as_ref().unwrap();
|
let db = maybe_db.as_ref().unwrap();
|
||||||
let mut stmt = db.prepare(sql)?;
|
let mut stmt = db.prepare(sql)?;
|
||||||
stmt.raw_bind_parameter(1, &pubkey.0)?;
|
stmt.raw_bind_parameter(1, &pubkey.0)?;
|
||||||
let mut rows = stmt.raw_query();
|
let mut rows = stmt.raw_query();
|
||||||
let mut maybe_relay: Option<Url> = None;
|
let mut relays: Vec<Url> = Vec::new();
|
||||||
if let Some(row) = rows.next()? {
|
while let Some(row) = rows.next()? {
|
||||||
let s: String = row.get(0)?;
|
let s: String = row.get(0)?;
|
||||||
maybe_relay = Some(Url::new(&s));
|
relays.push(Url::new(&s));
|
||||||
}
|
}
|
||||||
Ok(maybe_relay)
|
Ok(relays)
|
||||||
})
|
})
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
maybe_relay_result
|
relays
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -445,11 +445,11 @@ impl People {
|
|||||||
let pubkeys = self.get_followed_pubkeys();
|
let pubkeys = self.get_followed_pubkeys();
|
||||||
for pubkey in &pubkeys {
|
for pubkey in &pubkeys {
|
||||||
// Get their best relay
|
// Get their best relay
|
||||||
let maybeurl = DbPersonRelay::get_best_relay(pubkey.clone()).await?;
|
let relays = DbPersonRelay::get_best_relays(pubkey.clone()).await?;
|
||||||
|
let maybeurl = relays.get(0);
|
||||||
p_tags.push(Tag::Pubkey {
|
p_tags.push(Tag::Pubkey {
|
||||||
pubkey: pubkey.clone(),
|
pubkey: pubkey.clone(),
|
||||||
recommended_relay_url: maybeurl,
|
recommended_relay_url: maybeurl.cloned(),
|
||||||
petname: None,
|
petname: None,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user