Yuki Takei 1 год назад
Родитель
Сommit
83466971d8

+ 2 - 2
apps/app/src/client/components/Admin/G2GDataTransferExportForm.tsx

@@ -5,8 +5,8 @@ import React, {
 import { useTranslation } from 'next-i18next';
 import { useTranslation } from 'next-i18next';
 
 
 import GrowiArchiveImportOption from '~/models/admin/growi-archive-import-option';
 import GrowiArchiveImportOption from '~/models/admin/growi-archive-import-option';
-import ImportOptionForPages from '~/models/admin/import-option-for-pages';
-import ImportOptionForRevisions from '~/models/admin/import-option-for-revisions';
+import { ImportOptionForPages } from '~/models/admin/import-option-for-pages';
+import { ImportOptionForRevisions } from '~/models/admin/import-option-for-revisions';
 
 
 import ImportCollectionConfigurationModal from './ImportData/GrowiArchive/ImportCollectionConfigurationModal';
 import ImportCollectionConfigurationModal from './ImportData/GrowiArchive/ImportCollectionConfigurationModal';
 import ImportCollectionItem, { DEFAULT_MODE, MODE_RESTRICTED_COLLECTION } from './ImportData/GrowiArchive/ImportCollectionItem';
 import ImportCollectionItem, { DEFAULT_MODE, MODE_RESTRICTED_COLLECTION } from './ImportData/GrowiArchive/ImportCollectionItem';

+ 2 - 2
apps/app/src/client/components/Admin/ImportData/GrowiArchive/ImportForm.jsx

@@ -6,8 +6,8 @@ import PropTypes from 'prop-types';
 import { apiv3Post } from '~/client/util/apiv3-client';
 import { apiv3Post } from '~/client/util/apiv3-client';
 import { toastSuccess, toastError } from '~/client/util/toastr';
 import { toastSuccess, toastError } from '~/client/util/toastr';
 import GrowiArchiveImportOption from '~/models/admin/growi-archive-import-option';
 import GrowiArchiveImportOption from '~/models/admin/growi-archive-import-option';
-import ImportOptionForPages from '~/models/admin/import-option-for-pages';
-import ImportOptionForRevisions from '~/models/admin/import-option-for-revisions';
+import { ImportOptionForPages } from '~/models/admin/import-option-for-pages';
+import { ImportOptionForRevisions } from '~/models/admin/import-option-for-revisions';
 import { useAdminSocket } from '~/stores/socket-io';
 import { useAdminSocket } from '~/stores/socket-io';
 
 
 
 

+ 1 - 1
apps/app/src/models/admin/import-option-for-pages.js → apps/app/src/models/admin/import-option-for-pages.ts

@@ -1,4 +1,4 @@
-const GrowiArchiveImportOption = require('./growi-archive-import-option');
+import GrowiArchiveImportOption from './growi-archive-import-option';
 
 
 const DEFAULT_PROPS = {
 const DEFAULT_PROPS = {
   isOverwriteAuthorWithCurrentUser: false,
   isOverwriteAuthorWithCurrentUser: false,

+ 1 - 3
apps/app/src/models/admin/import-option-for-revisions.js

@@ -4,12 +4,10 @@ const DEFAULT_PROPS = {
   isOverwriteAuthorWithCurrentUser: false,
   isOverwriteAuthorWithCurrentUser: false,
 };
 };
 
 
-class ImportOptionForRevisions extends GrowiArchiveImportOption {
+export class ImportOptionForRevisions extends GrowiArchiveImportOption {
 
 
   constructor(mode, initProps) {
   constructor(mode, initProps) {
     super(mode, initProps || DEFAULT_PROPS);
     super(mode, initProps || DEFAULT_PROPS);
   }
   }
 
 
 }
 }
-
-module.exports = ImportOptionForRevisions;

+ 14 - 27
apps/app/src/server/service/import/overwrite-params/attachmentFiles.chunks.ts

@@ -1,32 +1,19 @@
-const { Binary } = require('mongodb');
-const { ObjectId } = require('mongoose').Types;
+import { Binary } from 'mongodb';
+import { Types } from 'mongoose';
 
 
-class AttachmentFilesChunksOverwriteParamsFactory {
+import type { OverwriteParams } from '../import-settings';
 
 
-  /**
-   * generate overwrite params object
-   * @param {string} operatorUserId
-   * @param {ImportOptionForPages} option
-   * @return {import('~/server/service/import').OverwriteParams}
-   *  key: property name
-   *  value: any value or a function `(value, { document, schema, propertyName }) => { return newValue }`
-   */
-  static generate(operatorUserId, option) {
-    const params = {};
 
 
-    // Date
-    params.files_id = (value, { document, schema, propertyName }) => {
-      return ObjectId(value);
-    };
+const { ObjectId } = Types;
 
 
-    // Binary
-    params.data = (value, { document, schema, propertyName }) => {
-      return Binary(value);
-    };
+export const overwriteParams: OverwriteParams = {
+  // Date
+  files_id: (value, { document, schema, propertyName }) => {
+    return new ObjectId(value);
+  },
 
 
-    return params;
-  }
-
-}
-
-module.exports = (operatorUserId, option) => AttachmentFilesChunksOverwriteParamsFactory.generate(operatorUserId, option);
+  // Binary
+  data: (value, { document, schema, propertyName }) => {
+    return new Binary(value);
+  },
+};

+ 17 - 7
apps/app/src/server/service/import/overwrite-params/index.ts

@@ -1,22 +1,32 @@
 import type GrowiArchiveImportOption from '~/models/admin/growi-archive-import-option';
 import type GrowiArchiveImportOption from '~/models/admin/growi-archive-import-option';
+import { isImportOptionForPages } from '~/models/admin/import-option-for-pages';
 
 
 import type { OverwriteParams } from '../import-settings';
 import type { OverwriteParams } from '../import-settings';
 
 
-import overwriteParamsAttachmentFilesChunks from './attachmentFiles.chunks';
-import overwriteParamsPages from './pages';
-import overwriteParamsRevisions from './revisions';
+import { overwriteParams as overwriteParamsForAttachmentFilesChunks } from './attachmentFiles.chunks';
+import { generateOverwriteParams as generateForPages } from './pages';
+import { generateOverwriteParams as generateForRevisions } from './revisions';
 
 
 /**
 /**
  * generate overwrite params with overwrite-params/* modules
  * generate overwrite params with overwrite-params/* modules
  */
  */
-export const generateOverwriteParams = (collectionName: string, operatorUserId: string, options: GrowiArchiveImportOption): OverwriteParams => {
+export const generateOverwriteParams = <OPT extends GrowiArchiveImportOption>(
+  collectionName: string, operatorUserId: string, options: OPT,
+): OverwriteParams => {
+
   switch (collectionName) {
   switch (collectionName) {
     case 'pages':
     case 'pages':
-      return overwriteParamsPages(operatorUserId, options);
+      if (!isImportOptionForPages(options)) {
+        throw new Error('Invalid option for pages');
+      }
+      return generateForPages(operatorUserId, options);
     case 'revisions':
     case 'revisions':
-      return overwriteParamsRevisions(operatorUserId, options);
+      if (!isImportOptionForPages(options)) {
+        throw new Error('Invalid option for revisions');
+      }
+      return generateForRevisions(operatorUserId, options);
     case 'attachmentFiles.chunks':
     case 'attachmentFiles.chunks':
-      return overwriteParamsAttachmentFilesChunks(operatorUserId, options);
+      return overwriteParamsForAttachmentFilesChunks;
     default:
     default:
       return {};
       return {};
   }
   }

+ 37 - 51
apps/app/src/server/service/import/overwrite-params/pages.ts

@@ -1,62 +1,48 @@
 import { PageGrant } from '@growi/core';
 import { PageGrant } from '@growi/core';
+import { Types } from 'mongoose';
 
 
-const mongoose = require('mongoose');
+import type { ImportOptionForPages } from '~/models/admin/import-option-for-pages';
 
 
-// eslint-disable-next-line no-unused-vars
-const ImportOptionForPages = require('~/models/admin/import-option-for-pages');
+import type { OverwriteParams } from '../import-settings';
 
 
-const { ObjectId } = mongoose.Types;
+const { ObjectId } = Types;
 
 
-class PageOverwriteParamsFactory {
+export const generateOverwriteParams = (operatorUserId: string, option: ImportOptionForPages): OverwriteParams => {
+  const params: OverwriteParams = {};
 
 
-  /**
-   * generate overwrite params object
-   * @param {string} operatorUserId
-   * @param {ImportOptionForPages} option
-   * @return {import('~/server/service/import').OverwriteParams}
-   *  key: property name
-   *  value: any value or a function `(value, { document, schema, propertyName }) => { return newValue }`
-   */
-  static generate(operatorUserId, option) {
-    const params = {};
+  if (option.isOverwriteAuthorWithCurrentUser) {
+    const userId = new ObjectId(operatorUserId);
+    params.creator = userId;
+    params.lastUpdateUser = userId;
+  }
 
 
-    if (option.isOverwriteAuthorWithCurrentUser) {
-      const userId = ObjectId(operatorUserId);
-      params.creator = userId;
-      params.lastUpdateUser = userId;
+  params.grant = (value, { document, schema, propertyName }) => {
+    if (option.makePublicForGrant2 && value === 2) {
+      return PageGrant.GRANT_PUBLIC;
     }
     }
-
-    params.grant = (value, { document, schema, propertyName }) => {
-      if (option.makePublicForGrant2 && value === 2) {
-        return PageGrant.GRANT_PUBLIC;
-      }
-      if (option.makePublicForGrant4 && value === 4) {
-        return PageGrant.GRANT_PUBLIC;
-      }
-      if (option.makePublicForGrant5 && value === 5) {
-        return PageGrant.GRANT_PUBLIC;
-      }
-      return value;
-    };
-
-    params.parent = (value, { document, schema, propertyName }) => {
-      return null;
-    };
-
-    params.descendantCount = (value, { document, schema, propertyName }) => {
-      return 0;
-    };
-
-    if (option.initPageMetadatas) {
-      params.liker = [];
-      params.seenUsers = [];
-      params.commentCount = 0;
-      params.extended = {};
+    if (option.makePublicForGrant4 && value === 4) {
+      return PageGrant.GRANT_PUBLIC;
     }
     }
-
-    return params;
+    if (option.makePublicForGrant5 && value === 5) {
+      return PageGrant.GRANT_PUBLIC;
+    }
+    return value;
+  };
+
+  params.parent = (value, { document, schema, propertyName }) => {
+    return null;
+  };
+
+  params.descendantCount = (value, { document, schema, propertyName }) => {
+    return 0;
+  };
+
+  if (option.initPageMetadatas) {
+    params.liker = [];
+    params.seenUsers = [];
+    params.commentCount = 0;
+    params.extended = {};
   }
   }
 
 
-}
-
-module.exports = (operatorUserId, option) => PageOverwriteParamsFactory.generate(operatorUserId, option);
+  return params;
+};

+ 11 - 24
apps/app/src/server/service/import/overwrite-params/revisions.ts

@@ -1,31 +1,18 @@
-const mongoose = require('mongoose');
+import { Types } from 'mongoose';
 
 
-// eslint-disable-next-line no-unused-vars
-const ImportOptionForPages = require('~/models/admin/import-option-for-pages');
+import type { ImportOptionForPages } from '~/models/admin/import-option-for-pages';
 
 
-const { ObjectId } = mongoose.Types;
+import type { OverwriteParams } from '../import-settings';
 
 
-class RevisionOverwriteParamsFactory {
+const { ObjectId } = Types;
 
 
-  /**
-   * generate overwrite params object
-   * @param {string} operatorUserId
-   * @param {ImportOptionForPages} option
-   * @return {import('~/server/service/import').OverwriteParams}
-   *  key: property name
-   *  value: any value or a function `(value, { document, schema, propertyName }) => { return newValue }`
-   */
-  static generate(operatorUserId, option) {
-    const params = {};
+export const generateOverwriteParams = (operatorUserId: string, option: ImportOptionForPages): OverwriteParams => {
+  const params: OverwriteParams = {};
 
 
-    if (option.isOverwriteAuthorWithCurrentUser) {
-      const userId = ObjectId(operatorUserId);
-      params.author = userId;
-    }
-
-    return params;
+  if (option.isOverwriteAuthorWithCurrentUser) {
+    const userId = new ObjectId(operatorUserId);
+    params.author = userId;
   }
   }
 
 
-}
-
-module.exports = (operatorUserId, option) => RevisionOverwriteParamsFactory.generate(operatorUserId, option);
+  return params;
+};