mirror of
https://git.asonix.dog/asonix/relay.git
synced 2024-11-25 11:01:11 +00:00
Add a crude re-seed for populating actors
This commit is contained in:
parent
e4c95a8168
commit
bd75b1f958
2 changed files with 33 additions and 1 deletions
|
@ -1,6 +1,6 @@
|
|||
use crate::{apub::AcceptedActors, db::Db, error::MyError, requests::Requests};
|
||||
use activitystreams::primitives::XsdAnyUri;
|
||||
use log::error;
|
||||
use log::{error, info, warn};
|
||||
use std::{collections::HashSet, sync::Arc, time::Duration};
|
||||
use tokio::sync::RwLock;
|
||||
use ttl_cache::TtlCache;
|
||||
|
@ -28,6 +28,34 @@ impl ActorCache {
|
|||
cache
|
||||
}
|
||||
|
||||
pub async fn re_seed(
|
||||
&self,
|
||||
listeners: &[XsdAnyUri],
|
||||
requests: &Requests,
|
||||
) -> Result<(), MyError> {
|
||||
info!("Seeding actors with {:?}", listeners);
|
||||
for listener in listeners {
|
||||
let mut listener = listener.clone();
|
||||
listener.as_url_mut().set_path("/actor");
|
||||
|
||||
let actor = match self.get(&listener, requests).await {
|
||||
Ok(actor) => actor,
|
||||
Err(e) => {
|
||||
warn!("Couldn't seed {} due to {}, continuing", e, listener);
|
||||
continue;
|
||||
}
|
||||
};
|
||||
|
||||
match self.save(actor).await {
|
||||
Ok(_) => (),
|
||||
Err(e) => {
|
||||
warn!("Coudn't seed {} due to {}, continuing", listener, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn is_following(&self, id: &XsdAnyUri) -> bool {
|
||||
self.following.read().await.contains(id)
|
||||
}
|
||||
|
|
|
@ -66,6 +66,10 @@ async fn main() -> Result<(), anyhow::Error> {
|
|||
let actors = ActorCache::new(db.clone());
|
||||
let job_server = create_server(db.clone());
|
||||
|
||||
actors
|
||||
.re_seed(&state.listeners().await, &state.requests())
|
||||
.await?;
|
||||
|
||||
notify::spawn(state.clone(), actors.clone(), job_server.clone(), &config)?;
|
||||
|
||||
if args.jobs_only() {
|
||||
|
|
Loading…
Reference in a new issue