Răsfoiți Sursa

Use mongoose.model() directly to reduce Crowi type dependency

Co-authored-by: yuki-takei <1638767+yuki-takei@users.noreply.github.com>
copilot-swe-agent[bot] 2 luni în urmă
părinte
comite
88e3a41d4d

+ 2 - 1
apps/app/src/pages/common-props/commons.ts

@@ -1,5 +1,6 @@
 import type { GetServerSideProps, GetServerSidePropsContext } from 'next';
 import type { ColorScheme, IUserHasId } from '@growi/core';
+import mongoose from 'mongoose';
 
 import type { CrowiRequest } from '~/interfaces/crowi-request';
 import { getGrowiVersion } from '~/utils/growi-version';
@@ -153,7 +154,7 @@ export const getServerSideCommonEachProps = async (
 
   let currentUser: IUserHasId | undefined;
   if (user != null) {
-    const User = crowi.models.User;
+    const User = mongoose.model('User');
     const userData = await User.findById(user.id).populate({
       path: 'imageAttachment',
       select: 'filePathProxied',

+ 4 - 4
apps/app/src/server/service/page/index.ts

@@ -1807,7 +1807,7 @@ class PageService implements IPageService {
     oldPagePathPrefix,
     newPagePathPrefix,
   ) {
-    const Page = this.crowi.models.Page;
+    const Page = mongoose.model('Page') as unknown as PageModel;
 
     const pageIds = pages.map((page) => page._id);
     const revisions = await Revision.find({ pageId: { $in: pageIds } });
@@ -2370,7 +2370,7 @@ class PageService implements IPageService {
 
   async deleteCompletelyOperation(pageIds, pagePaths): Promise<void> {
     // Delete Attachments, Revisions, Pages and emit delete
-    const Page = this.crowi.models.Page;
+    const Page = mongoose.model('Page') as unknown as PageModel;
 
     const { attachmentService } = this.crowi;
     const attachments = await Attachment.find({ page: { $in: pageIds } });
@@ -3112,7 +3112,7 @@ class PageService implements IPageService {
     userRelatedGroups: PopulatedGrantedGroup[],
     userRelatedParentGrantedGroups: IGrantedGroup[],
   ): Promise<void> {
-    const Page = this.crowi.models.Page;
+    const Page = mongoose.model('Page') as unknown as PageModel;
     const operations: any = [];
 
     pages.forEach((childPage) => {
@@ -3855,7 +3855,7 @@ class PageService implements IPageService {
   }
 
   async _isPagePathIndexUnique() {
-    const Page = this.crowi.models.Page;
+    const Page = mongoose.model('Page') as unknown as PageModel;
     const now = new Date().toString();
     const path = `growi_check_is_path_index_unique_${now}`;
 

+ 3 - 3
apps/app/src/server/service/search.ts

@@ -60,8 +60,8 @@ const normalizeNQName = (nqName: string): string => {
 };
 
 const findPageListByIds = async (pageIds: ObjectIdLike[], crowi: any) => {
-  const Page = crowi.models.Page as unknown as PageModel;
-  const User = crowi.models.User;
+  const Page = mongoose.model('Page') as unknown as PageModel;
+  const User = mongoose.model('User') as any; // Cast to any to access static properties
 
   const builder = new Page.PageQueryBuilder(
     Page.find({ _id: { $in: pageIds } }),
@@ -549,7 +549,7 @@ class SearchService implements SearchQueryParser, SearchResolver {
     /*
      * Format ElasticSearch result
      */
-    const User = this.crowi.models.User;
+    const User = mongoose.model('User') as any; // Cast to any to access static properties
     const result = {} as IFormattedSearchResult;
 
     // get page data

+ 1 - 1
apps/app/src/server/service/slack-event-handler/link-shared.ts

@@ -179,7 +179,7 @@ export class LinkSharedEventHandler
     pages: any,
     isPermalink: boolean,
   ): DataForUnfurl[] {
-    const Page = this.crowi.models.Page;
+    const Page = mongoose.model('Page') as unknown as PageModel;
     const unfurlData: DataForUnfurl[] = [];
 
     for (const page of pages) {