Yuki Takei 2 лет назад
Родитель
Сommit
06a162e79a

+ 6 - 7
packages/remark-lsx/src/server/routes/list-pages/add-num-condition.spec.ts

@@ -1,14 +1,13 @@
-import type { IPage } from '@growi/core';
 import { OptionParser } from '@growi/core/dist/plugin';
 import createError from 'http-errors';
-import type { Query, Document } from 'mongoose';
 import { mock } from 'vitest-mock-extended';
 
 import { addNumCondition } from './add-num-condition';
+import type { PageQuery } from './generate-base-query';
 
 describe('addNumCondition()', () => {
 
-  const queryMock = mock<Query<IPage[], Document>>();
+  const queryMock = mock<PageQuery>();
 
   it('throws 400 http-errors instance when the option value is null', () => {
     // when
@@ -30,7 +29,7 @@ describe('addNumCondition()', () => {
     // setup
     const parseRangeSpy = vi.spyOn(OptionParser, 'parseRange');
 
-    const queryLimitResultMock = mock<Query<IPage[], Document>>();
+    const queryLimitResultMock = mock<PageQuery>();
     queryMock.limit.calledWith(99).mockImplementation(() => queryLimitResultMock);
 
     // when
@@ -81,12 +80,12 @@ describe('addNumCondition() set skip and limit with the range string', () => {
     optionsNum, expectedSkip, expectedLimit, isExpectedToSetLimit,
   }) => {
     // setup
-    const queryMock = mock<Query<IPage[], Document>>();
+    const queryMock = mock<PageQuery>();
 
-    const querySkipResultMock = mock<Query<IPage[], Document>>();
+    const querySkipResultMock = mock<PageQuery>();
     queryMock.skip.calledWith(expectedSkip).mockImplementation(() => querySkipResultMock);
 
-    const queryLimitResultMock = mock<Query<IPage[], Document>>();
+    const queryLimitResultMock = mock<PageQuery>();
     querySkipResultMock.limit.calledWith(expectedLimit).mockImplementation(() => queryLimitResultMock);
 
     const parseRangeSpy = vi.spyOn(OptionParser, 'parseRange');

+ 3 - 3
packages/remark-lsx/src/server/routes/list-pages/add-num-condition.ts

@@ -1,13 +1,13 @@
-import type { IPage } from '@growi/core';
 import { OptionParser } from '@growi/core/dist/plugin';
 import createError from 'http-errors';
-import type { Query, Document } from 'mongoose';
+
+import type { PageQuery } from './generate-base-query';
 
 
 /**
  * add num condition that limit fetched pages
  */
-export const addNumCondition = (query: Query<IPage[], Document>, optionsNum: true | string | number | null): Query<IPage[], Document> => {
+export const addNumCondition = (query: PageQuery, optionsNum: true | string | number | null): PageQuery => {
   // when option strings is 'num=' or the option value is true
   if (optionsNum == null || optionsNum === true) {
     throw createError(400, 'The value of num option is invalid.');

+ 3 - 3
packages/remark-lsx/src/server/routes/list-pages/add-sort-condition.ts

@@ -1,6 +1,6 @@
-import type { IPage } from '@growi/core';
 import createError from 'http-errors';
-import type { Query, Document } from 'mongoose';
+
+import type { PageQuery } from './generate-base-query';
 
 /**
  * add sort condition(sort key & sort order)
@@ -9,7 +9,7 @@ import type { Query, Document } from 'mongoose';
  * If only the sort key is specified, the sort order is the ascending order.
  *
  */
-export const addSortCondition = (query: Query<IPage[], Document>, optionsSortArg?: string, optionsReverse?: string): Query<IPage[], Document> => {
+export const addSortCondition = (query: PageQuery, optionsSortArg?: string, optionsReverse?: string): PageQuery => {
   // init sort key
   const optionsSort = optionsSortArg ?? 'path';
 

+ 3 - 1
packages/remark-lsx/src/server/routes/list-pages/generate-base-query.ts

@@ -2,8 +2,10 @@ import { IPage, IUser } from '@growi/core';
 import { model } from 'mongoose';
 import type { Document, Query } from 'mongoose';
 
+export type PageQuery = Query<IPage[], Document>;
+
 export type PageQueryBuilder = {
-  query: Query<IPage[], Document>,
+  query: PageQuery,
   addConditionToListOnlyDescendants: (pagePath: string) => PageQueryBuilder,
   addConditionToFilteringByViewerForList: (builder: PageQueryBuilder, user: IUser) => PageQueryBuilder,
 };

+ 3 - 2
packages/remark-lsx/src/server/routes/list-pages/index.spec.ts

@@ -1,9 +1,10 @@
 import { IPage, IUser } from '@growi/core';
 import type { Request, Response } from 'express';
 import createError from 'http-errors';
-import type { Query, Document } from 'mongoose';
 import { mock } from 'vitest-mock-extended';
 
+import type { PageQuery } from './generate-base-query';
+
 import { listPages } from '.';
 
 
@@ -52,7 +53,7 @@ describe('listPages', () => {
       reqMock.query = { pagePath: '/Sandbox' };
 
       const pageMock = mock<IPage>();
-      const queryMock = mock<Query<IPage[], Document>>();
+      const queryMock = mock<PageQuery>();
       queryMock.exec.mockImplementation(async() => [pageMock]);
       mocks.addSortConditionMock.mockImplementation(() => queryMock);
 

+ 4 - 4
packages/remark-lsx/src/server/routes/list-pages/index.ts

@@ -8,7 +8,7 @@ import createError, { isHttpError } from 'http-errors';
 
 import { addNumCondition } from './add-num-condition';
 import { addSortCondition } from './add-sort-condition';
-import { generateBaseQuery } from './generate-base-query';
+import { generateBaseQuery, type PageQuery } from './generate-base-query';
 import { getToppageViewersCount } from './get-toppage-viewers-count';
 
 
@@ -18,7 +18,7 @@ const DEFAULT_PAGES_NUM = 50;
 const { addTrailingSlash } = pathUtils;
 const { isTopPage } = pagePathUtils;
 
-function addDepthCondition(query, pagePath, optionsDepth) {
+function addDepthCondition(query, pagePath, optionsDepth): PageQuery {
   // when option strings is 'depth=', the option value is true
   if (optionsDepth == null || optionsDepth === true) {
     throw createError(400, 'The value of depth option is invalid.');
@@ -52,7 +52,7 @@ function addDepthCondition(query, pagePath, optionsDepth) {
 /**
  * add filter condition that filter fetched pages
  */
-function addFilterCondition(query, pagePath, optionsFilter, isExceptFilter = false) {
+function addFilterCondition(query, pagePath, optionsFilter, isExceptFilter = false): PageQuery {
   // when option strings is 'filter=', the option value is true
   if (optionsFilter == null || optionsFilter === true) {
     throw createError(400, 'filter option require value in regular expression.');
@@ -84,7 +84,7 @@ function addFilterCondition(query, pagePath, optionsFilter, isExceptFilter = fal
   });
 }
 
-function addExceptCondition(query, pagePath, optionsFilter) {
+function addExceptCondition(query, pagePath, optionsFilter): PageQuery {
   return this.addFilterCondition(query, pagePath, optionsFilter, true);
 }