fix: fill attachments in RichObject too

This commit is contained in:
əlemi 2024-06-08 15:19:46 +02:00
parent a35ff4832f
commit a8257deeeb
Signed by: alemi
GPG key ID: A4895B84D311642C

View file

@ -8,10 +8,7 @@ pub struct Query;
impl Query { impl Query {
pub fn activities(my_id: Option<i64>) -> Select<model::addressing::Entity> { pub fn activities(my_id: Option<i64>) -> Select<model::addressing::Entity> {
let mut select = model::addressing::Entity::find() let mut select = model::addressing::Entity::find()
.distinct_on([ .distinct_on([(model::activity::Entity, model::activity::Column::Internal)])
(model::activity::Entity, model::activity::Column::Internal).into_column_ref(),
(model::addressing::Entity, model::addressing::Column::Published).into_column_ref(),
])
.join(sea_orm::JoinType::InnerJoin, model::addressing::Relation::Activities.def()) .join(sea_orm::JoinType::InnerJoin, model::addressing::Relation::Activities.def())
.join(sea_orm::JoinType::LeftJoin, model::addressing::Relation::Objects.def()) .join(sea_orm::JoinType::LeftJoin, model::addressing::Relation::Objects.def())
.filter( .filter(
@ -20,8 +17,8 @@ impl Query {
.add(model::activity::Column::Id.is_not_null()) .add(model::activity::Column::Id.is_not_null())
.add(model::object::Column::Id.is_not_null()) .add(model::object::Column::Id.is_not_null())
) )
.order_by(model::addressing::Column::Published, Order::Desc)
.order_by(model::activity::Column::Internal, Order::Desc) .order_by(model::activity::Column::Internal, Order::Desc)
.order_by(model::addressing::Column::Published, Order::Desc)
.select_only(); .select_only();
for col in model::activity::Column::iter() { for col in model::activity::Column::iter() {
@ -47,10 +44,11 @@ impl Query {
pub fn objects(my_id: Option<i64>) -> Select<model::addressing::Entity> { pub fn objects(my_id: Option<i64>) -> Select<model::addressing::Entity> {
let mut select = model::addressing::Entity::find() let mut select = model::addressing::Entity::find()
.distinct_on([ // .distinct_on([
(model::object::Entity, model::object::Column::Internal).into_column_ref(), // (model::object::Entity, model::object::Column::Internal).into_column_ref(),
(model::addressing::Entity, model::addressing::Column::Published).into_column_ref(), // (model::addressing::Entity, model::addressing::Column::Published).into_column_ref(),
]) // ])
.distinct()
.join(sea_orm::JoinType::InnerJoin, model::addressing::Relation::Objects.def()) .join(sea_orm::JoinType::InnerJoin, model::addressing::Relation::Objects.def())
.order_by(model::addressing::Column::Published, Order::Desc) .order_by(model::addressing::Column::Published, Order::Desc)
.order_by(model::object::Column::Internal, Order::Desc) .order_by(model::object::Column::Internal, Order::Desc)
@ -140,6 +138,12 @@ impl RichObject {
pub fn ap(self) -> serde_json::Value { pub fn ap(self) -> serde_json::Value {
self.object.ap() self.object.ap()
.set_liked_by_me(if self.liked.is_some() { Some(true) } else { None }) .set_liked_by_me(if self.liked.is_some() { Some(true) } else { None })
.set_attachment(match self.attachments {
None => apb::Node::Empty,
Some(vec) => apb::Node::array(
vec.into_iter().map(|x| x.ap()).collect()
)
})
} }
} }
@ -231,3 +235,22 @@ impl BatchFillable for RichObject {
Ok(self) Ok(self)
} }
} }
#[cfg(test)]
mod test {
use sea_orm::{ColumnTrait, Condition, QueryFilter, QueryTrait};
#[test]
fn wtf_postgres() {
panic!("{}", crate::Query::objects(None)
.filter(
Condition::any()
.add(crate::model::addressing::Column::Actor.is_null())
.add(crate::model::addressing::Column::Actor.eq(2))
.add(crate::model::object::Column::AttributedTo.eq("https://upub.alemi.dev/actors/alemi"))
)
.build(sea_orm::DatabaseBackend::Postgres)
.to_string()
)
}
}