From 012079cd9beae022b31d83862d8c8a9a63bcf8bd Mon Sep 17 00:00:00 2001 From: April John Date: Fri, 22 Nov 2024 19:02:28 +0100 Subject: [PATCH] fix doublicate check --- src/objects/person.rs | 8 ++++---- src/objects/post.rs | 15 ++++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/objects/person.rs b/src/objects/person.rs index 2a2c443..ede3460 100644 --- a/src/objects/person.rs +++ b/src/objects/person.rs @@ -190,11 +190,11 @@ impl Object for user::Model { async fn from_json( json: Self::Kind, - _data: &Data, + data: &Data, ) -> Result { let query = User::find() - .filter(user::Column::Id.eq(json.id.inner().as_str())) - .one(_data.database_connection.as_ref()) + .filter(user::Column::Url.eq(json.id.inner().as_str())) + .one(data.database_connection.as_ref()) .await?; if let Some(user) = query { return Ok(user); @@ -216,7 +216,7 @@ impl Object for user::Model { ap_json: Set(Some(serde_json::to_string(&copied_json).unwrap())), ..Default::default() }; - let model = model.insert(_data.database_connection.as_ref()).await; + let model = model.insert(data.database_connection.as_ref()).await; if let Err(err) = model { eprintln!("Error inserting user: {:?}", err); Err(err.into()) diff --git a/src/objects/post.rs b/src/objects/post.rs index ebe7faa..506f12d 100644 --- a/src/objects/post.rs +++ b/src/objects/post.rs @@ -1,11 +1,5 @@ use crate::{ - activities::create_post::CreatePost, - database::StateHandle, - entities::{post, user}, - error::Error, - versia::conversion::db_user_from_url, - objects::person::DbUser, - utils::generate_object_id, + activities::create_post::CreatePost, database::StateHandle, entities::{prelude::Post, user, post}, error::Error, objects::person::DbUser, utils::generate_object_id, versia::conversion::db_user_from_url }; use activitypub_federation::{ config::Data, @@ -120,6 +114,13 @@ impl Object for post::Model { "Received post with content {} and id {}", &json.content, &json.id ); + let query = Post::find() + .filter(post::Column::Url.eq(json.id.inner().as_str())) + .one(data.database_connection.as_ref()) + .await?; + if let Some(post) = query { + return Ok(post); + } let creator = json.attributed_to.dereference(data).await?; let post: post::ActiveModel = post::ActiveModel { content: Set(json.content.clone()),