fix: 🐛 pagination for "/api/channels/followed"

Co-authored-by: takonomura <@takonomura@github.com>
This commit is contained in:
ThatOneCalculator 2023-02-15 10:31:10 -08:00
parent 8490b00609
commit 071071663e
No known key found for this signature in database
GPG Key ID: 8703CACD01000000
1 changed files with 12 additions and 6 deletions

View File

@ -1,6 +1,5 @@
import define from "../../define.js";
import { Channels, ChannelFollowings } from "@/models/index.js";
import { makePaginationQuery } from "../../common/make-pagination-query.js";
export const meta = {
tags: ["channels", "account"],
@ -33,11 +32,18 @@ export const paramDef = {
} as const;
export default define(meta, paramDef, async (ps, me) => {
const query = makePaginationQuery(
ChannelFollowings.createQueryBuilder(),
ps.sinceId,
ps.untilId,
).andWhere({ followerId: me.id });
const query = ChannelFollowings.createQueryBuilder('following').andWhere({ followerId: me.id });
if (ps.sinceId) {
query.andWhere('following."followeeId" > :sinceId', { sinceId: ps.sinceId });
}
if (ps.untilId) {
query.andWhere('following."followeeId" < :untilId', { untilId: ps.untilId });
}
if (ps.sinceId && !ps.untilId) {
query.orderBy('following."followeeId"', 'ASC');
} else {
query.orderBy('following."followeeId"', 'DESC');
}
const followings = await query.take(ps.limit).getMany();