From eb26feb655af04d799a3c7356c1827636a298aa5 Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 22 Oct 2024 10:28:00 +0800 Subject: [PATCH] core: deprecate ProblemModel.list --- packages/hydrooj/src/handler/problem.ts | 6 +++--- packages/hydrooj/src/model/problem.ts | 1 + packages/hydrooj/src/service/server.ts | 5 +++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/hydrooj/src/handler/problem.ts b/packages/hydrooj/src/handler/problem.ts index 15170380c..5a75b1472 100644 --- a/packages/hydrooj/src/handler/problem.ts +++ b/packages/hydrooj/src/handler/problem.ts @@ -142,9 +142,9 @@ export class ProblemMainHandler extends Handler { // eslint-disable-next-line prefer-const let [pdocs, ppcount, pcount] = this.queryContext.fail ? [[], 0, 0] - : await problem.list( - domainId, query, sort.length ? 1 : page, limit, - quick ? ['title', 'pid', 'domainId', 'docId'] : undefined, + : await this.paginate( + problem.getMulti(domainId, query, quick ? ['title', 'pid', 'domainId', 'docId'] : undefined).sort({ sort: 1, docId: 1 }), + sort.length ? 1 : page, limit, ); if (total) { pcount = total; diff --git a/packages/hydrooj/src/model/problem.ts b/packages/hydrooj/src/model/problem.ts index 6d71d6c74..2c80800d9 100644 --- a/packages/hydrooj/src/model/problem.ts +++ b/packages/hydrooj/src/model/problem.ts @@ -192,6 +192,7 @@ export class ProblemModel { return document.getMulti(domainId, document.TYPE_PROBLEM, query, projection).sort({ sort: 1 }); } + /** @deprecated */ static async list( domainId: string, query: Filter, page: number, pageSize: number, diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index e1d11976e..44f5d1b89 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -32,6 +32,7 @@ declare module '@hydrooj/framework' { domain: DomainDoc; paginate(cursor: FindCursor, page: number, key: string): Promise<[docs: T[], numPages: number, count: number]>; + paginate(cursor: FindCursor, page: number, limit: number): Promise<[docs: T[], numPages: number, count: number]>; progress(message: string, params: any[]): void; limitRate(op: string, periodSecs: number, maxOperations: number, defaultKey?: string): Promise; renderTitle(str: string): string; @@ -237,8 +238,8 @@ export async function apply(ctx: Context) { : str.toString().translate(...this.context.acceptsLanguages(), system.get('server.language')); return res; }, - paginate(cursor: FindCursor, page: number, key: string) { - return db.paginate(cursor, page, this.ctx.setting.get(`pagination.${key}`) || 20); + paginate(cursor: FindCursor, page: number, key: string | number) { + return db.paginate(cursor, page, typeof key === 'number' ? key : (this.ctx.setting.get(`pagination.${key}`) || 20)); }, checkPerm(...args: bigint[]) { if (!this.user.hasPerm(...args)) {