forked from alemi/upub
fix: fill attachments in RichObject too
This commit is contained in:
parent
a35ff4832f
commit
a8257deeeb
1 changed files with 32 additions and 9 deletions
|
@ -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()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue