external-user-group-relation.ts 2.4 KB

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