Filter groups given a member (#5034)

* feat: filter groups given a member

* Revert "feat: filter groups given a member"

This reverts commit 7dac8bb38de1fdaf661c636c5d1b13e4112fd8fd.

* fix: make it work via db query
This commit is contained in:
Apoorv Mishra
2023-03-16 12:31:56 +05:30
committed by GitHub
parent 6a29104d09
commit 21a44428f4
4 changed files with 86 additions and 2 deletions

View File

@@ -9,6 +9,7 @@ import {
BelongsToMany,
DefaultScope,
DataType,
Scopes,
} from "sequelize-typescript";
import CollectionGroup from "./CollectionGroup";
import GroupUser from "./GroupUser";
@@ -27,6 +28,23 @@ import NotContainsUrl from "./validators/NotContainsUrl";
},
],
}))
@Scopes(() => ({
withMember: (memberId: string) => ({
include: [
{
association: "groupMemberships",
required: true,
},
{
association: "members",
required: true,
where: {
userId: memberId,
},
},
],
}),
}))
@Table({
tableName: "groups",
modelName: "group",
@@ -76,9 +94,16 @@ class Group extends ParanoidModel {
});
}
static filterByMember(memberId: string | undefined) {
return memberId
? this.scope({ method: ["withMember", memberId] })
: this.scope("defaultScope");
}
// associations
@HasMany(() => GroupUser, "groupId")
@HasMany(() => GroupUser, { as: "members", foreignKey: "groupId" })
groupMemberships: GroupUser[];
@HasMany(() => CollectionGroup, "groupId")