Просмотр исходного кода

refs 126902: make grantedGroup ref dynamic

Futa Arai 2 лет назад
Родитель
Сommit
1d233a71af

+ 1 - 0
apps/app/src/server/models/interfaces/page-operation.ts

@@ -10,6 +10,7 @@ export type IPageForResuming = {
   grant?: number,
   grant?: number,
   grantedUsers?: ObjectIdLike[],
   grantedUsers?: ObjectIdLike[],
   grantedGroup?: ObjectIdLike,
   grantedGroup?: ObjectIdLike,
+  grantedGroupModel?: string,
   descendantCount: number,
   descendantCount: number,
   status?: number,
   status?: number,
   revision?: ObjectIdLike,
   revision?: ObjectIdLike,

+ 6 - 6
apps/app/src/server/models/obsolete-page.js

@@ -69,12 +69,12 @@ export const extractToAncestorsPaths = (pagePath) => {
 export const populateDataToShowRevision = (page, userPublicFields, shouldExcludeBody = false) => {
 export const populateDataToShowRevision = (page, userPublicFields, shouldExcludeBody = false) => {
   return page
   return page
     .populate([
     .populate([
-      { path: 'lastUpdateUser', model: 'User', select: userPublicFields },
-      { path: 'creator', model: 'User', select: userPublicFields },
-      { path: 'deleteUser', model: 'User', select: userPublicFields },
-      { path: 'grantedGroup', model: 'UserGroup' },
-      { path: 'revision', model: 'Revision', select: shouldExcludeBody ? '-body' : undefined, populate: {
-        path: 'author', model: 'User', select: userPublicFields,
+      { path: 'lastUpdateUser', select: userPublicFields },
+      { path: 'creator', select: userPublicFields },
+      { path: 'deleteUser', select: userPublicFields },
+      { path: 'grantedGroup' },
+      { path: 'revision', select: shouldExcludeBody ? '-body' : undefined, populate: {
+        path: 'author', select: userPublicFields,
       } },
       } },
     ]);
     ]);
 };
 };

+ 8 - 2
apps/app/src/server/models/page-operation.ts

@@ -59,7 +59,13 @@ const pageSchemaForResuming = new Schema<IPageForResuming>({
   status: { type: String },
   status: { type: String },
   grant: { type: Number },
   grant: { type: Number },
   grantedUsers: [{ type: ObjectId, ref: 'User' }],
   grantedUsers: [{ type: ObjectId, ref: 'User' }],
-  grantedGroup: { type: ObjectId, ref: 'UserGroup' },
+  grantedGroup: { type: ObjectId, refPath: 'grantedGroupModel', index: true },
+  grantedGroupModel: {
+    type: String,
+    enum: ['UserGroup', 'ExternalUserGroup'],
+    required: true,
+    default: 'UserGroup',
+  },
   creator: { type: ObjectId, ref: 'User' },
   creator: { type: ObjectId, ref: 'User' },
   lastUpdateUser: { type: ObjectId, ref: 'User' },
   lastUpdateUser: { type: ObjectId, ref: 'User' },
 });
 });
@@ -73,7 +79,7 @@ const optionsSchemaForResuming = new Schema<IOptionsForResuming>({
   updateMetadata: { type: Boolean },
   updateMetadata: { type: Boolean },
   prevDescendantCount: { type: Number },
   prevDescendantCount: { type: Number },
   grant: { type: Number },
   grant: { type: Number },
-  grantUserGroupId: { type: ObjectId, ref: 'UserGroup' },
+  grantUserGroupId: { type: ObjectId },
   format: { type: String },
   format: { type: String },
   isSyncRevisionToHackmd: { type: Boolean },
   isSyncRevisionToHackmd: { type: Boolean },
   overwriteScopesOfDescendants: { type: Boolean },
   overwriteScopesOfDescendants: { type: Boolean },

+ 7 - 1
apps/app/src/server/models/page.ts

@@ -97,7 +97,13 @@ const schema = new Schema<PageDocument, PageModel>({
   status: { type: String, default: STATUS_PUBLISHED, index: true },
   status: { type: String, default: STATUS_PUBLISHED, index: true },
   grant: { type: Number, default: GRANT_PUBLIC, index: true },
   grant: { type: Number, default: GRANT_PUBLIC, index: true },
   grantedUsers: [{ type: ObjectId, ref: 'User' }],
   grantedUsers: [{ type: ObjectId, ref: 'User' }],
-  grantedGroup: { type: ObjectId, ref: 'UserGroup', index: true },
+  grantedGroup: { type: ObjectId, refPath: 'grantedGroupModel', index: true },
+  grantedGroupModel: {
+    type: String,
+    enum: ['UserGroup', 'ExternalUserGroup'],
+    required: true,
+    default: 'UserGroup',
+  },
   creator: { type: ObjectId, ref: 'User', index: true },
   creator: { type: ObjectId, ref: 'User', index: true },
   lastUpdateUser: { type: ObjectId, ref: 'User' },
   lastUpdateUser: { type: ObjectId, ref: 'User' },
   liker: [{ type: ObjectId, ref: 'User' }],
   liker: [{ type: ObjectId, ref: 'User' }],

+ 1 - 0
packages/core/src/interfaces/page.ts

@@ -21,6 +21,7 @@ export type IPage = {
   grant: PageGrant,
   grant: PageGrant,
   grantedUsers: Ref<IUser>[],
   grantedUsers: Ref<IUser>[],
   grantedGroup: Ref<any>,
   grantedGroup: Ref<any>,
+  grantedGroupModel?: string,
   lastUpdateUser: Ref<IUser>,
   lastUpdateUser: Ref<IUser>,
   liker: Ref<IUser>[],
   liker: Ref<IUser>[],
   commentCount: number
   commentCount: number