mirror of
https://github.com/mikedilger/gossip.git
synced 2024-09-19 11:43:43 +00:00
Overlord to save dirty relays on "save_relays" message (post field only)
This commit is contained in:
parent
0bca661974
commit
825fc8b5bb
@ -147,6 +147,20 @@ impl DbRelay {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn update_post(url: String, post: bool) -> Result<(), Error> {
|
||||
let sql = "UPDATE relay SET post = ? 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((&post, &url))?;
|
||||
Ok::<(), Error>(())
|
||||
})
|
||||
.await??;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub async fn delete(criteria: &str) -> Result<(), Error> {
|
||||
let sql = format!("DELETE FROM relay WHERE {}", criteria);
|
||||
|
@ -446,6 +446,28 @@ impl Overlord {
|
||||
settings.save().await?;
|
||||
}
|
||||
}
|
||||
"save_relays" => {
|
||||
let dirty_relays: Vec<DbRelay> = GLOBALS
|
||||
.relays
|
||||
.read()
|
||||
.await
|
||||
.iter()
|
||||
.filter_map(|(_, r)| if r.dirty { Some(r.to_owned()) } else { None })
|
||||
.collect();
|
||||
info!("Saving {} relays", dirty_relays.len());
|
||||
for relay in dirty_relays.iter() {
|
||||
// Just update 'post' since that's all 'dirty' indicates currently
|
||||
DbRelay::update_post(relay.url.to_owned(), relay.post).await?;
|
||||
if let Some(relay) = GLOBALS
|
||||
.relays
|
||||
.write()
|
||||
.await
|
||||
.get_mut(&Url(relay.url.clone()))
|
||||
{
|
||||
relay.dirty = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
_ => {}
|
||||
|
Loading…
Reference in New Issue
Block a user