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:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user