Răsfoiți Sursa

implement RevisionService and move isSpecifiedRevisionExist in there

yohei0125 3 ani în urmă
părinte
comite
0f93b8147a

+ 1 - 4
packages/app/src/pages/[[...path]].page.tsx

@@ -2,7 +2,6 @@ import React, { useEffect } from 'react';
 
 
 import { isClient, pagePathUtils, pathUtils } from '@growi/core';
 import { isClient, pagePathUtils, pathUtils } from '@growi/core';
 import ExtensibleCustomError from 'extensible-custom-error';
 import ExtensibleCustomError from 'extensible-custom-error';
-import { isValidObjectId } from 'mongoose';
 import {
 import {
   NextPage, GetServerSideProps, GetServerSidePropsContext,
   NextPage, GetServerSideProps, GetServerSidePropsContext,
 } from 'next';
 } from 'next';
@@ -420,8 +419,6 @@ export const getServerSideProps: GetServerSideProps = async(context: GetServerSi
   const { crowi, user } = req;
   const { crowi, user } = req;
   const { revisionId } = req.query;
   const { revisionId } = req.query;
 
 
-  const Revision = crowi.model('Revision');
-
   const result = await getServerSideCommonProps(context);
   const result = await getServerSideCommonProps(context);
 
 
   // check for presence
   // check for presence
@@ -446,7 +443,7 @@ export const getServerSideProps: GetServerSideProps = async(context: GetServerSi
   }
   }
 
 
   // check revision
   // check revision
-  const isSpecifiedRevisionExist = isValidObjectId(revisionId) ? await Revision.exists({ _id: revisionId }) : false;
+  const isSpecifiedRevisionExist = await crowi.revisionService.isSpecifiedRevisionExist(revisionId);
   const page = pageWithMeta?.data;
   const page = pageWithMeta?.data;
   if (page == null || page.latestRevision == null || revisionId == null || !isSpecifiedRevisionExist) {
   if (page == null || page.latestRevision == null || revisionId == null || !isSpecifiedRevisionExist) {
     props.isLatestRevision = true;
     props.isLatestRevision = true;

+ 9 - 0
packages/app/src/server/crowi/index.js

@@ -27,6 +27,7 @@ import { InstallerService } from '../service/installer';
 import PageService from '../service/page';
 import PageService from '../service/page';
 import PageGrantService from '../service/page-grant';
 import PageGrantService from '../service/page-grant';
 import PageOperationService from '../service/page-operation';
 import PageOperationService from '../service/page-operation';
+import RevisionService from '../service/revision';
 import SearchService from '../service/search';
 import SearchService from '../service/search';
 import { SlackIntegrationService } from '../service/slack-integration';
 import { SlackIntegrationService } from '../service/slack-integration';
 import { UserNotificationService } from '../service/user-notification';
 import { UserNotificationService } from '../service/user-notification';
@@ -67,6 +68,7 @@ function Crowi() {
   this.exportService = null;
   this.exportService = null;
   this.importService = null;
   this.importService = null;
   this.searchService = null;
   this.searchService = null;
+  this.revisionService = null;
   this.socketIoService = null;
   this.socketIoService = null;
   this.pageService = null;
   this.pageService = null;
   this.syncPageStatusService = null;
   this.syncPageStatusService = null;
@@ -131,6 +133,7 @@ Crowi.prototype.init = async function() {
     this.setupExport(),
     this.setupExport(),
     this.setupImport(),
     this.setupImport(),
     this.setupPageService(),
     this.setupPageService(),
+    this.setupRevisionService(),
     this.setupInAppNotificationService(),
     this.setupInAppNotificationService(),
     this.setupActivityService(),
     this.setupActivityService(),
     this.setupCommentService(),
     this.setupCommentService(),
@@ -695,6 +698,12 @@ Crowi.prototype.setupPageService = async function() {
   }
   }
 };
 };
 
 
+Crowi.prototype.setupRevisionService = async function() {
+  if (this.revisionService == null) {
+    this.revisionService = new RevisionService(this);
+  }
+};
+
 Crowi.prototype.setupInAppNotificationService = async function() {
 Crowi.prototype.setupInAppNotificationService = async function() {
   const InAppNotificationService = require('../service/in-app-notification');
   const InAppNotificationService = require('../service/in-app-notification');
   if (this.inAppNotificationService == null) {
   if (this.inAppNotificationService == null) {

+ 18 - 0
packages/app/src/server/service/revision.ts

@@ -0,0 +1,18 @@
+import { isValidObjectId } from 'mongoose';
+
+class RevisionService {
+
+  crowi: any;
+
+  constructor(crowi) {
+    this.crowi = crowi;
+  }
+
+  async isSpecifiedRevisionExist(revisionId: string): Promise<boolean> {
+    const Revision = this.crowi.model('Revision');
+    return isValidObjectId(revisionId) ? Revision.exists({ _id: revisionId }) : false;
+  }
+
+}
+
+export default RevisionService;