diff --git a/apps/server/src/database/pagination/pagination.ts b/apps/server/src/database/pagination/pagination.ts index 2b4ee90f..6e25d836 100644 --- a/apps/server/src/database/pagination/pagination.ts +++ b/apps/server/src/database/pagination/pagination.ts @@ -18,6 +18,7 @@ export async function executeWithPagination( perPage: number; page: number; experimental_deferredJoinPrimaryKey?: StringReference; + hasEmptyIds?: boolean; // in cases where we pass empty whereIn ids }, ): Promise> { if (opts.page < 1) { @@ -33,21 +34,20 @@ export async function executeWithPagination( .select((eb) => eb.ref(deferredJoinPrimaryKey).as('primaryKey')) .execute() // @ts-expect-error TODO: Fix the type here later - + .then((rows) => rows.map((row) => row.primaryKey)); qb = qb .where((eb) => primaryKeys.length > 0 - ? - eb(deferredJoinPrimaryKey, 'in', primaryKeys as any) + ? eb(deferredJoinPrimaryKey, 'in', primaryKeys as any) : eb(sql`1`, '=', 0), ) .clearOffset() .clearLimit(); } - const rows = await qb.execute(); + const rows = opts.hasEmptyIds ? [] : await qb.execute(); const hasNextPage = rows.length > 0 ? rows.length > opts.perPage : false; const hasPrevPage = rows.length > 0 ? opts.page > 1 : false; diff --git a/apps/server/src/database/repos/page/page.repo.ts b/apps/server/src/database/repos/page/page.repo.ts index d6fff24d..850fb2d1 100644 --- a/apps/server/src/database/repos/page/page.repo.ts +++ b/apps/server/src/database/repos/page/page.repo.ts @@ -107,7 +107,11 @@ export class PageRepo { return dbOrTx(this.db, trx) .updateTable('pages') .set({ ...updatePageData, updatedAt: new Date() }) - .where(pageIds.some(pageId => !isValidUUID(pageId)) ? "slugId" : "id", "in", pageIds) + .where( + pageIds.some((pageId) => !isValidUUID(pageId)) ? 'slugId' : 'id', + 'in', + pageIds, + ) .executeTakeFirst(); } @@ -161,9 +165,11 @@ export class PageRepo { .where('spaceId', 'in', userSpaceIds) .orderBy('updatedAt', 'desc'); + const hasEmptyIds = userSpaceIds.length === 0; const result = executeWithPagination(query, { page: pagination.page, perPage: pagination.limit, + hasEmptyIds, }); return result; diff --git a/apps/server/src/database/repos/space/space-member.repo.ts b/apps/server/src/database/repos/space/space-member.repo.ts index b59df33c..3db29988 100644 --- a/apps/server/src/database/repos/space/space-member.repo.ts +++ b/apps/server/src/database/repos/space/space-member.repo.ts @@ -221,7 +221,7 @@ export class SpaceMemberRepo { let query = this.db .selectFrom('spaces') - .selectAll('spaces') + .selectAll() .select((eb) => [this.spaceRepo.withMemberCount(eb)]) //.where('workspaceId', '=', workspaceId) .where('id', 'in', userSpaceIds) @@ -237,9 +237,12 @@ export class SpaceMemberRepo { ); } + const hasEmptyIds = userSpaceIds.length === 0; + const result = executeWithPagination(query, { page: pagination.page, perPage: pagination.limit, + hasEmptyIds, }); return result;