summaryrefslogtreecommitdiff
path: root/packages/backend
diff options
context:
space:
mode:
authorおさむのひと <46447427+samunohito@users.noreply.github.com>2025-05-03 15:40:57 +0900
committerGitHub <noreply@github.com>2025-05-03 15:40:57 +0900
commitc13aa0c2247d8eb8dc4c9f43099cd4e1eae71c27 (patch)
treed98b665779afeb653cab48cd81eb39f2f4561fee /packages/backend
parentfeat: CREATE INDEX CONCURRENTLY for "userId" "id" composite note index if adm... (diff)
downloadmisskey-c13aa0c2247d8eb8dc4c9f43099cd4e1eae71c27.tar.gz
misskey-c13aa0c2247d8eb8dc4c9f43099cd4e1eae71c27.tar.bz2
misskey-c13aa0c2247d8eb8dc4c9f43099cd4e1eae71c27.zip
fix(backend): チャンネルフォロー一覧のsinceId/untilIdによる絞り込みが上手く動いていないのを修正 (#13698)
* fix(backend): チャンネルフォロー一覧のsinceId/untilIdによる絞り込みが上手く動いていないのを修正 * fix CHANGELOG.md * docs(changelog): fix mistaken changelog insertion (restore newline) * docs(changelog): update insertion position --------- Co-authored-by: Sayamame-beans <61457993+Sayamame-beans@users.noreply.github.com>
Diffstat (limited to 'packages/backend')
-rw-r--r--packages/backend/src/core/QueryService.ts39
-rw-r--r--packages/backend/src/server/api/endpoints/channels/followed.ts10
2 files changed, 32 insertions, 17 deletions
diff --git a/packages/backend/src/core/QueryService.ts b/packages/backend/src/core/QueryService.ts
index e219efaf3d..b9cef5b0ec 100644
--- a/packages/backend/src/core/QueryService.ts
+++ b/packages/backend/src/core/QueryService.ts
@@ -43,29 +43,36 @@ export class QueryService {
) {
}
- public makePaginationQuery<T extends ObjectLiteral>(q: SelectQueryBuilder<T>, sinceId?: string | null, untilId?: string | null, sinceDate?: number | null, untilDate?: number | null): SelectQueryBuilder<T> {
+ public makePaginationQuery<T extends ObjectLiteral>(
+ q: SelectQueryBuilder<T>,
+ sinceId?: string | null,
+ untilId?: string | null,
+ sinceDate?: number | null,
+ untilDate?: number | null,
+ targetColumn = 'id',
+ ): SelectQueryBuilder<T> {
if (sinceId && untilId) {
- q.andWhere(`${q.alias}.id > :sinceId`, { sinceId: sinceId });
- q.andWhere(`${q.alias}.id < :untilId`, { untilId: untilId });
- q.orderBy(`${q.alias}.id`, 'DESC');
+ q.andWhere(`${q.alias}.${targetColumn} > :sinceId`, { sinceId: sinceId });
+ q.andWhere(`${q.alias}.${targetColumn} < :untilId`, { untilId: untilId });
+ q.orderBy(`${q.alias}.${targetColumn}`, 'DESC');
} else if (sinceId) {
- q.andWhere(`${q.alias}.id > :sinceId`, { sinceId: sinceId });
- q.orderBy(`${q.alias}.id`, 'ASC');
+ q.andWhere(`${q.alias}.${targetColumn} > :sinceId`, { sinceId: sinceId });
+ q.orderBy(`${q.alias}.${targetColumn}`, 'ASC');
} else if (untilId) {
- q.andWhere(`${q.alias}.id < :untilId`, { untilId: untilId });
- q.orderBy(`${q.alias}.id`, 'DESC');
+ q.andWhere(`${q.alias}.${targetColumn} < :untilId`, { untilId: untilId });
+ q.orderBy(`${q.alias}.${targetColumn}`, 'DESC');
} else if (sinceDate && untilDate) {
- q.andWhere(`${q.alias}.id > :sinceId`, { sinceId: this.idService.gen(sinceDate) });
- q.andWhere(`${q.alias}.id < :untilId`, { untilId: this.idService.gen(untilDate) });
- q.orderBy(`${q.alias}.id`, 'DESC');
+ q.andWhere(`${q.alias}.${targetColumn} > :sinceId`, { sinceId: this.idService.gen(sinceDate) });
+ q.andWhere(`${q.alias}.${targetColumn} < :untilId`, { untilId: this.idService.gen(untilDate) });
+ q.orderBy(`${q.alias}.${targetColumn}`, 'DESC');
} else if (sinceDate) {
- q.andWhere(`${q.alias}.id > :sinceId`, { sinceId: this.idService.gen(sinceDate) });
- q.orderBy(`${q.alias}.id`, 'ASC');
+ q.andWhere(`${q.alias}.${targetColumn} > :sinceId`, { sinceId: this.idService.gen(sinceDate) });
+ q.orderBy(`${q.alias}.${targetColumn}`, 'ASC');
} else if (untilDate) {
- q.andWhere(`${q.alias}.id < :untilId`, { untilId: this.idService.gen(untilDate) });
- q.orderBy(`${q.alias}.id`, 'DESC');
+ q.andWhere(`${q.alias}.${targetColumn} < :untilId`, { untilId: this.idService.gen(untilDate) });
+ q.orderBy(`${q.alias}.${targetColumn}`, 'DESC');
} else {
- q.orderBy(`${q.alias}.id`, 'DESC');
+ q.orderBy(`${q.alias}.${targetColumn}`, 'DESC');
}
return q;
}
diff --git a/packages/backend/src/server/api/endpoints/channels/followed.ts b/packages/backend/src/server/api/endpoints/channels/followed.ts
index d2f36f251e..294b5e4bc4 100644
--- a/packages/backend/src/server/api/endpoints/channels/followed.ts
+++ b/packages/backend/src/server/api/endpoints/channels/followed.ts
@@ -48,7 +48,15 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private queryService: QueryService,
) {
super(meta, paramDef, async (ps, me) => {
- const query = this.queryService.makePaginationQuery(this.channelFollowingsRepository.createQueryBuilder(), ps.sinceId, ps.untilId)
+ const query = this.queryService
+ .makePaginationQuery(
+ this.channelFollowingsRepository.createQueryBuilder(),
+ ps.sinceId,
+ ps.untilId,
+ null,
+ null,
+ 'followeeId',
+ )
.andWhere({ followerId: me.id });
const followings = await query