On relay success, update relay table, not person_relay last_fetched

This commit is contained in:
Mike Dilger 2022-12-26 10:51:02 +13:00
parent d693907cf4
commit 67859ef9e5
5 changed files with 22 additions and 25 deletions

View File

@ -164,22 +164,6 @@ impl DbPersonRelay {
Ok(())
}
pub async fn update_last_fetched(relay: String, last_fetched: u64) -> Result<(), Error> {
let sql = "UPDATE person_relay SET last_fetched=? where relay=?";
spawn_blocking(move || {
let maybe_db = GLOBALS.db.blocking_lock();
let db = maybe_db.as_ref().unwrap();
let mut stmt = db.prepare(sql)?;
stmt.execute((&last_fetched, &*relay))?;
Ok::<(), Error>(())
})
.await??;
Ok(())
}
#[allow(dead_code)]
pub async fn delete(criteria: &str) -> Result<(), Error> {
let sql = format!("DELETE FROM person_relay WHERE {}", criteria);

View File

@ -107,6 +107,24 @@ impl DbRelay {
Ok(())
}
/// This also bumps success_count
pub async fn update_success(url: String, last_success_at: u64) -> Result<(), Error> {
let sql = "UPDATE relay SET success_count = success_count + 1, last_success_at = ? \
WHERE url = ?";
spawn_blocking(move || {
let maybe_db = GLOBALS.db.blocking_lock();
let db = maybe_db.as_ref().unwrap();
let mut stmt = db.prepare(sql)?;
stmt.execute((&last_success_at, &url))?;
Ok::<(), Error>(())
})
.await??;
Ok(())
}
#[allow(dead_code)]
pub async fn delete(criteria: &str) -> Result<(), Error> {
let sql = format!("DELETE FROM relay WHERE {}", criteria);

View File

@ -1,5 +1,4 @@
use super::Minion;
use crate::db::DbPersonRelay;
use crate::Error;
use nostr_types::{RelayMessage, Unixtime};
use tracing::{debug, error, info, warn};
@ -27,10 +26,6 @@ impl Minion {
info!("NOTICE: {} {}", &self.url, msg);
}
RelayMessage::Eose(subid) => {
// We should update last_fetched
let now = Unixtime::now().unwrap().0 as u64;
DbPersonRelay::update_last_fetched(self.url.0.clone(), now).await?;
// Update the matching subscription
match self.subscriptions.get_mut_by_id(&subid.0) {
Some(sub) => {

View File

@ -140,8 +140,8 @@ impl Minion {
// Bump the success count for the relay
{
self.dbrelay.success_count += 1;
DbRelay::update(self.dbrelay.clone()).await?;
let now = Unixtime::now().unwrap().0 as u64;
DbRelay::update_success(self.dbrelay.url.clone(), now).await?
}
// Subscribe to the people we follow

View File

@ -10,8 +10,8 @@ pub(super) fn update(_app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::F
ui.add_space(18.0);
let mut relays = GLOBALS.relays.blocking_lock().clone();
let mut relays: Vec<DbRelay> = relays.drain().map(|(_,relay)| relay).collect();
relays.sort_by(|a,b| a.url.cmp(&b.url));
let mut relays: Vec<DbRelay> = relays.drain().map(|(_, relay)| relay).collect();
relays.sort_by(|a, b| a.url.cmp(&b.url));
ScrollArea::vertical().show(ui, |ui| {
for relay in relays.iter() {