fix: join with actors and select id

This commit is contained in:
əlemi 2024-06-10 04:24:51 +02:00
parent bc747af055
commit caf990f291
Signed by: alemi
GPG key ID: A4895B84D311642C

View file

@ -1,5 +1,5 @@
use axum::extract::{Path, Query, State}; use axum::extract::{Path, Query, State};
use sea_orm::{ColumnTrait, Condition, EntityTrait, QueryFilter, QuerySelect, SelectColumns}; use sea_orm::{ColumnTrait, Condition, EntityTrait, QueryFilter, QuerySelect, SelectColumns, RelationTrait};
use upub::{model, Context}; use upub::{model, Context};
@ -59,7 +59,7 @@ pub async fn page<const OUTGOING: bool>(
use upub::model::relation::Column::{Follower, Following, FollowerInstance, FollowingInstance}; use upub::model::relation::Column::{Follower, Following, FollowerInstance, FollowingInstance};
let follow___ = if OUTGOING { "following" } else { "followers" }; let follow___ = if OUTGOING { "following" } else { "followers" };
let limit = page.batch.unwrap_or(20).min(50); let limit = page.batch.unwrap_or(100).min(500);
let offset = page.offset.unwrap_or(0); let offset = page.offset.unwrap_or(0);
let (user, config) = model::actor::Entity::find_by_ap_id(&ctx.uid(&id)) let (user, config) = model::actor::Entity::find_by_ap_id(&ctx.uid(&id))
@ -98,10 +98,17 @@ pub async fn page<const OUTGOING: bool>(
} }
} }
let join = if OUTGOING {
model::relation::Relation::ActorsFollowing.def()
} else {
model::relation::Relation::ActorsFollower.def()
};
let following = model::relation::Entity::find() let following = model::relation::Entity::find()
.filter(filter) .filter(filter)
.join(sea_orm::JoinType::LeftJoin, join)
.select_only() .select_only()
.select_column(if OUTGOING { Following } else { Follower }) .select_column(model::actor::Column::Id)
.limit(limit) .limit(limit)
.offset(page.offset.unwrap_or(0)) .offset(page.offset.unwrap_or(0))
.into_tuple::<String>() .into_tuple::<String>()