external-user-group-relation.ts 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import type { Document, Model } 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
  9. extends IExternalUserGroupRelation,
  10. Document {}
  11. export interface ExternalUserGroupRelationModel
  12. extends Model<ExternalUserGroupRelationDocument> {
  13. // biome-ignore lint/suspicious/noExplicitAny: ignore
  14. [x: string]: any; // for old methods
  15. PAGE_ITEMS: 50;
  16. removeAllByUserGroups: (
  17. groupsToDelete: ExternalUserGroupDocument[],
  18. ) => Promise<any>;
  19. findAllUserIdsForUserGroups: (
  20. userGroupIds: ObjectIdLike[],
  21. ) => Promise<string[]>;
  22. findGroupsWithDescendantsByGroupAndUser: (
  23. group: ExternalUserGroupDocument,
  24. user,
  25. ) => Promise<ExternalUserGroupDocument[]>;
  26. countByGroupIdsAndUser: (
  27. userGroupIds: ObjectIdLike[],
  28. userData,
  29. ) => Promise<number>;
  30. findAllGroupsForUser: (user) => Promise<ExternalUserGroupDocument[]>;
  31. findAllUserGroupIdsRelatedToUser: (user) => Promise<ObjectIdLike[]>;
  32. }
  33. const schema = new Schema<
  34. ExternalUserGroupRelationDocument,
  35. ExternalUserGroupRelationModel
  36. >(
  37. {
  38. relatedGroup: {
  39. type: Schema.Types.ObjectId,
  40. ref: 'ExternalUserGroup',
  41. required: true,
  42. },
  43. relatedUser: { type: Schema.Types.ObjectId, ref: 'User', required: true },
  44. },
  45. {
  46. timestamps: { createdAt: true, updatedAt: false },
  47. },
  48. );
  49. schema.statics.createRelations = UserGroupRelation.createRelations;
  50. schema.statics.removeAllByUserGroups = UserGroupRelation.removeAllByUserGroups;
  51. schema.statics.findAllRelation = UserGroupRelation.findAllRelation;
  52. schema.statics.removeAllInvalidRelations =
  53. UserGroupRelation.removeAllInvalidRelations;
  54. schema.statics.findGroupsWithDescendantsByGroupAndUser =
  55. UserGroupRelation.findGroupsWithDescendantsByGroupAndUser;
  56. schema.statics.countByGroupIdsAndUser =
  57. UserGroupRelation.countByGroupIdsAndUser;
  58. schema.statics.findAllUserIdsForUserGroups =
  59. UserGroupRelation.findAllUserIdsForUserGroups;
  60. schema.statics.findAllUserGroupIdsRelatedToUser =
  61. UserGroupRelation.findAllUserGroupIdsRelatedToUser;
  62. schema.statics.findAllGroupsForUser = UserGroupRelation.findAllGroupsForUser;
  63. export default getOrCreateModel<
  64. ExternalUserGroupRelationDocument,
  65. ExternalUserGroupRelationModel
  66. >('ExternalUserGroupRelation', schema);