1
0
Fork 0
forked from alemi/upub

feat: add context to objects

This commit is contained in:
əlemi 2024-03-21 19:25:37 +01:00
parent c4f677097b
commit 017f508907
Signed by: alemi
GPG key ID: A4895B84D311642C
2 changed files with 10 additions and 0 deletions

View file

@ -44,6 +44,8 @@ UQIDAQAB
user::Entity::insert(root.clone().into_active_model()).exec(db).await?;
let context = uuid::Uuid::new_v4().to_string();
for i in (0..100).rev() {
let oid = uuid::Uuid::new_v4();
let aid = uuid::Uuid::new_v4();
@ -53,6 +55,7 @@ UQIDAQAB
object_type: Set(crate::activitystream::object::ObjectType::Note),
attributed_to: Set(Some(format!("{domain}/users/root"))),
summary: Set(None),
context: Set(Some(context.clone())),
content: Set(Some(format!("[{i}] Tic(k). Quasiparticle of intensive multiplicity. Tics (or ticks) are intrinsically several components of autonomously numbering anorganic populations, propagating by contagion between segmentary divisions in the order of nature. Ticks - as nonqualitative differentially-decomposable counting marks - each designate a multitude comprehended as a singular variation in tic(k)-density."))),
published: Set(chrono::Utc::now() - std::time::Duration::from_secs(60*i)),
}).exec(db).await?;

View file

@ -13,6 +13,7 @@ pub struct Model {
pub name: Option<String>,
pub summary: Option<String>,
pub content: Option<String>,
pub context: Option<String>,
pub published: ChronoDateTimeUtc,
}
@ -60,6 +61,7 @@ impl crate::activitystream::Base for Model {
.set_name(self.name.as_deref())
.set_summary(self.summary.as_deref())
.set_content(self.content.as_deref())
.set_context(Node::maybe_link(self.context.clone()))
.set_published(Some(self.published))
}
}
@ -85,6 +87,10 @@ impl crate::activitystream::object::Object for Model {
self.content.as_deref()
}
fn context(&self) -> Node<impl crate::activitystream::Object> {
Node::maybe_link(self.context.clone())
}
fn published (&self) -> Option<chrono::DateTime<chrono::Utc>> {
Some(self.published)
}
@ -99,6 +105,7 @@ impl Model {
name: object.name().map(|x| x.to_string()),
summary: object.summary().map(|x| x.to_string()),
content: object.content().map(|x| x.to_string()),
context: object.context().id().map(|x| x.to_string()),
published: object.published().ok_or(super::FieldError("published"))?,
})
}