fix: user update task without deleting

This commit is contained in:
əlemi 2024-05-29 20:26:40 +02:00
parent 07d0d400d8
commit 78f71deead
Signed by: alemi
GPG key ID: A4895B84D311642C

View file

@ -1,5 +1,5 @@
use futures::TryStreamExt; use futures::TryStreamExt;
use sea_orm::{ColumnTrait, EntityTrait, QueryFilter}; use sea_orm::{ActiveValue::{Set, NotSet}, ColumnTrait, EntityTrait, QueryFilter};
use crate::server::fetcher::Fetcher; use crate::server::fetcher::Fetcher;
@ -19,8 +19,11 @@ pub async fn update_users(ctx: crate::server::Context, days: i64) -> crate::Resu
match ctx.pull_user(&user.id).await { match ctx.pull_user(&user.id).await {
Err(e) => tracing::warn!("could not update user {}: {e}", user.id), Err(e) => tracing::warn!("could not update user {}: {e}", user.id),
Ok(doc) => match crate::model::actor::ActiveModel::new(&doc) { Ok(doc) => match crate::model::actor::ActiveModel::new(&doc) {
Ok(u) => { Ok(mut u) => {
insertions.push((user.id, u)); u.internal = NotSet;
u.updated = Set(chrono::Utc::now());
let uid = u.id.take().unwrap_or(user.id.clone());
insertions.push((uid, u));
count += 1; count += 1;
}, },
Err(e) => tracing::warn!("failed deserializing user '{}': {e}", user.id), Err(e) => tracing::warn!("failed deserializing user '{}': {e}", user.id),
@ -31,8 +34,10 @@ pub async fn update_users(ctx: crate::server::Context, days: i64) -> crate::Resu
for (uid, user_model) in insertions { for (uid, user_model) in insertions {
tracing::info!("updating user {}", uid); tracing::info!("updating user {}", uid);
crate::model::actor::Entity::delete_by_ap_id(&uid).exec(ctx.db()).await?; crate::model::actor::Entity::update(user_model)
crate::model::actor::Entity::insert(user_model).exec(ctx.db()).await?; .filter(crate::model::actor::Column::Id.eq(uid))
.exec(ctx.db())
.await?;
} }
tracing::info!("updated {count} users"); tracing::info!("updated {count} users");