forked from alemi/upub
feat: create mock activities for fetched objects
This commit is contained in:
parent
2d10f29b56
commit
4d4cbe0ef8
1 changed files with 23 additions and 4 deletions
|
@ -131,12 +131,31 @@ impl Fetcher for Context {
|
||||||
let addressed = object.addressed();
|
let addressed = object.addressed();
|
||||||
let object_model = model::object::Model::new(&object)?;
|
let object_model = model::object::Model::new(&object)?;
|
||||||
|
|
||||||
model::object::Entity::insert(object_model.clone().into_active_model())
|
// since bare objects make no sense in our representation, we create a mock activity attributed to
|
||||||
.exec(self.db()).await?;
|
// our server actor which creates this object. we respect all addressing we were made aware of
|
||||||
|
// and claim no ownership of this object, pointing to the original author if it's given.
|
||||||
|
// TODO it may be cool to make a system that, when the "true" activity is discovered, deletes
|
||||||
|
// this and replaces the addressing entries? idk kinda lot of work
|
||||||
|
let wrapper_activity_model = model::activity::Model {
|
||||||
|
id: self.aid(uuid::Uuid::new_v4().to_string()),
|
||||||
|
activity_type: apb::ActivityType::Create,
|
||||||
|
actor: self.base(),
|
||||||
|
object: Some(object_model.id.clone()),
|
||||||
|
target: object_model.attributed_to.clone(),
|
||||||
|
cc: object_model.cc.clone(),
|
||||||
|
bcc: object_model.bcc.clone(),
|
||||||
|
to: object_model.to.clone(),
|
||||||
|
bto: object_model.bto.clone(),
|
||||||
|
published: chrono::Utc::now(),
|
||||||
|
};
|
||||||
|
|
||||||
let expanded_addresses = self.expand_addressing(addressed).await?;
|
let expanded_addresses = self.expand_addressing(addressed).await?;
|
||||||
// TODO we don't know which activity created this!
|
self.address_to(&wrapper_activity_model.id, Some(&object_model.id), &expanded_addresses).await?;
|
||||||
self.address_to("", Some(&object_model.id), &expanded_addresses).await?;
|
|
||||||
|
model::activity::Entity::insert(wrapper_activity_model.into_active_model())
|
||||||
|
.exec(self.db()).await?;
|
||||||
|
model::object::Entity::insert(object_model.clone().into_active_model())
|
||||||
|
.exec(self.db()).await?;
|
||||||
|
|
||||||
Ok(object_model)
|
Ok(object_model)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue