forked from alemi/upub
fix: add updated field on objects and set it
This commit is contained in:
parent
30219c7fe6
commit
ee8ab38570
5 changed files with 49 additions and 0 deletions
40
src/migrations/m20240502_000001_add_object_updated.rs
Normal file
40
src/migrations/m20240502_000001_add_object_updated.rs
Normal file
|
@ -0,0 +1,40 @@
|
|||
use sea_orm_migration::prelude::*;
|
||||
|
||||
#[derive(DeriveMigrationName)]
|
||||
pub struct Migration;
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl MigrationTrait for Migration {
|
||||
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
manager
|
||||
.alter_table(
|
||||
Table::alter()
|
||||
.table(Objects::Table)
|
||||
.add_column(ColumnDef::new(Objects::Updated).date_time().null())
|
||||
.to_owned()
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
manager
|
||||
.alter_table(
|
||||
Table::alter()
|
||||
.table(Objects::Table)
|
||||
.drop_column(Objects::Updated)
|
||||
.to_owned()
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(DeriveIden)]
|
||||
enum Objects {
|
||||
Table,
|
||||
Updated,
|
||||
}
|
||||
|
|
@ -13,6 +13,7 @@ mod m20240418_000001_add_statuses_and_reply_to;
|
|||
mod m20240421_000001_add_attachments;
|
||||
mod m20240424_000001_add_sensitive_field;
|
||||
mod m20240429_000001_add_relays_table;
|
||||
mod m20240502_000001_add_object_updated;
|
||||
|
||||
pub struct Migrator;
|
||||
|
||||
|
@ -33,6 +34,7 @@ impl MigratorTrait for Migrator {
|
|||
Box::new(m20240421_000001_add_attachments::Migration),
|
||||
Box::new(m20240424_000001_add_sensitive_field::Migration),
|
||||
Box::new(m20240429_000001_add_relays_table::Migration),
|
||||
Box::new(m20240502_000001_add_object_updated::Migration),
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ pub struct Model {
|
|||
pub to: Audience,
|
||||
pub bto: Audience,
|
||||
pub published: ChronoDateTimeUtc,
|
||||
pub updated: Option<ChronoDateTimeUtc>,
|
||||
|
||||
pub sensitive: bool,
|
||||
}
|
||||
|
@ -41,6 +42,7 @@ impl Model {
|
|||
context: object.context().id(),
|
||||
in_reply_to: object.in_reply_to().id(),
|
||||
published: object.published().ok_or(super::FieldError("published"))?,
|
||||
updated: object.updated(),
|
||||
comments: object.replies().get()
|
||||
.map_or(0, |x| x.total_items().unwrap_or(0)) as i64,
|
||||
likes: object.likes().get()
|
||||
|
@ -67,6 +69,7 @@ impl Model {
|
|||
.set_context(apb::Node::maybe_link(self.context.clone()))
|
||||
.set_in_reply_to(apb::Node::maybe_link(self.in_reply_to.clone()))
|
||||
.set_published(Some(self.published))
|
||||
.set_updated(self.updated)
|
||||
.set_to(apb::Node::links(self.to.0.clone()))
|
||||
.set_bto(apb::Node::Empty)
|
||||
.set_cc(apb::Node::links(self.cc.0.clone()))
|
||||
|
|
|
@ -252,6 +252,7 @@ impl apb::server::Inbox for Context {
|
|||
// back up to serde_json::Value because impl Object != impl Actor
|
||||
let actor_model = model::user::Model::new(&object_node)?;
|
||||
let mut update_model = actor_model.into_active_model();
|
||||
update_model.updated = sea_orm::Set(chrono::Utc::now());
|
||||
update_model.reset(model::user::Column::Name);
|
||||
update_model.reset(model::user::Column::Summary);
|
||||
update_model.reset(model::user::Column::Image);
|
||||
|
@ -262,6 +263,7 @@ impl apb::server::Inbox for Context {
|
|||
Some(apb::ObjectType::Note) => {
|
||||
let object_model = model::object::Model::new(&object_node)?;
|
||||
let mut update_model = object_model.into_active_model();
|
||||
update_model.updated = sea_orm::Set(Some(chrono::Utc::now()));
|
||||
update_model.reset(model::object::Column::Name);
|
||||
update_model.reset(model::object::Column::Summary);
|
||||
update_model.reset(model::object::Column::Content);
|
||||
|
|
|
@ -327,6 +327,7 @@ impl apb::server::Outbox for Context {
|
|||
if actor_model.icon.is_none() { actor_model.icon = old_actor_model.icon }
|
||||
|
||||
let mut update_model = actor_model.into_active_model();
|
||||
update_model.updated = sea_orm::Set(chrono::Utc::now());
|
||||
update_model.reset(model::user::Column::Name);
|
||||
update_model.reset(model::user::Column::Summary);
|
||||
update_model.reset(model::user::Column::Image);
|
||||
|
@ -357,6 +358,7 @@ impl apb::server::Outbox for Context {
|
|||
if object_model.content.is_none() { object_model.content = old_object_model.content }
|
||||
|
||||
let mut update_model = object_model.into_active_model();
|
||||
update_model.updated = sea_orm::Set(Some(chrono::Utc::now()));
|
||||
update_model.reset(model::object::Column::Name);
|
||||
update_model.reset(model::object::Column::Summary);
|
||||
update_model.reset(model::object::Column::Content);
|
||||
|
|
Loading…
Reference in a new issue