external-user-group-relation.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { Schema, Model, Document } from 'mongoose';
  2. import { ObjectIdLike } from '~/server/interfaces/mongoose-utils';
  3. import UserGroupRelation from '~/server/models/user-group-relation';
  4. import { getOrCreateModel } from '../../../../server/util/mongoose-utils';
  5. import { IExternalUserGroupRelation } from '../../interfaces/external-user-group';
  6. import { ExternalUserGroupDocument } from './external-user-group';
  7. export interface ExternalUserGroupRelationDocument extends IExternalUserGroupRelation, Document {}
  8. export interface ExternalUserGroupRelationModel extends Model<ExternalUserGroupRelationDocument> {
  9. [x:string]: any, // for old methods
  10. PAGE_ITEMS: 50,
  11. removeAllByUserGroups: (groupsToDelete: ExternalUserGroupDocument[]) => Promise<any>,
  12. findAllUserIdsForUserGroups: (userGroupIds: ObjectIdLike[]) => Promise<string[]>,
  13. findGroupsWithDescendantsByGroupAndUser: (group: ExternalUserGroupDocument, user) => Promise<ExternalUserGroupDocument[]>,
  14. countByGroupIdsAndUser: (userGroupIds: ObjectIdLike[], userData) => Promise<number>
  15. findAllGroupsForUser: (user) => Promise<ExternalUserGroupDocument[]>
  16. }
  17. const schema = new Schema<ExternalUserGroupRelationDocument, ExternalUserGroupRelationModel>({
  18. relatedGroup: { type: Schema.Types.ObjectId, ref: 'ExternalUserGroup', required: true },
  19. relatedUser: { type: Schema.Types.ObjectId, ref: 'User', required: true },
  20. }, {
  21. timestamps: { createdAt: true, updatedAt: false },
  22. });
  23. schema.statics.createRelations = UserGroupRelation.createRelations;
  24. schema.statics.removeAllByUserGroups = UserGroupRelation.removeAllByUserGroups;
  25. schema.statics.findAllRelation = UserGroupRelation.findAllRelation;
  26. schema.statics.removeAllInvalidRelations = UserGroupRelation.removeAllInvalidRelations;
  27. schema.statics.findGroupsWithDescendantsByGroupAndUser = UserGroupRelation.findGroupsWithDescendantsByGroupAndUser;
  28. schema.statics.countByGroupIdsAndUser = UserGroupRelation.countByGroupIdsAndUser;
  29. schema.statics.findAllUserIdsForUserGroups = UserGroupRelation.findAllUserIdsForUserGroups;
  30. schema.statics.findAllUserGroupIdsRelatedToUser = UserGroupRelation.findAllUserGroupIdsRelatedToUser;
  31. schema.statics.findAllGroupsForUser = UserGroupRelation.findAllGroupsForUser;
  32. export default getOrCreateModel<ExternalUserGroupRelationDocument, ExternalUserGroupRelationModel>('ExternalUserGroupRelation', schema);