diff --git a/src/db/person_relay.rs b/src/db/person_relay.rs index f7bdf69a..a6cddd89 100644 --- a/src/db/person_relay.rs +++ b/src/db/person_relay.rs @@ -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); diff --git a/src/db/relay.rs b/src/db/relay.rs index e66ba1a3..76ca8d2d 100644 --- a/src/db/relay.rs +++ b/src/db/relay.rs @@ -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); diff --git a/src/overlord/minion/handle_websocket.rs b/src/overlord/minion/handle_websocket.rs index 53ddc89f..c1229362 100644 --- a/src/overlord/minion/handle_websocket.rs +++ b/src/overlord/minion/handle_websocket.rs @@ -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) => { diff --git a/src/overlord/minion/mod.rs b/src/overlord/minion/mod.rs index 887347ef..96821859 100644 --- a/src/overlord/minion/mod.rs +++ b/src/overlord/minion/mod.rs @@ -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 diff --git a/src/ui/relays.rs b/src/ui/relays.rs index 4adcee66..a143a5bf 100644 --- a/src/ui/relays.rs +++ b/src/ui/relays.rs @@ -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 = relays.drain().map(|(_,relay)| relay).collect(); - relays.sort_by(|a,b| a.url.cmp(&b.url)); + let mut relays: Vec = 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() {