mirror of
https://github.com/docmost/docmost.git
synced 2025-11-12 17:42:36 +10:00
fix space member count
* fix space added_by_id * rename user role change endpoints
This commit is contained in:
@ -147,7 +147,7 @@ export class SpaceMemberService {
|
||||
spaceId: dto.spaceId,
|
||||
userId: user.id,
|
||||
role: dto.role,
|
||||
creatorId: authUser.id,
|
||||
addedById: authUser.id,
|
||||
});
|
||||
}
|
||||
|
||||
@ -157,7 +157,7 @@ export class SpaceMemberService {
|
||||
spaceId: dto.spaceId,
|
||||
groupId: group.id,
|
||||
role: dto.role,
|
||||
creatorId: authUser.id,
|
||||
addedById: authUser.id,
|
||||
});
|
||||
}
|
||||
|
||||
@ -172,7 +172,6 @@ export class SpaceMemberService {
|
||||
|
||||
async removeMemberFromSpace(
|
||||
dto: RemoveSpaceMemberDto,
|
||||
authUser: User, // Todo: permissions check
|
||||
workspaceId: string,
|
||||
): Promise<void> {
|
||||
const space = await this.spaceRepo.findById(dto.spaceId, workspaceId);
|
||||
@ -218,7 +217,6 @@ export class SpaceMemberService {
|
||||
|
||||
async updateSpaceMemberRole(
|
||||
dto: UpdateSpaceMemberRoleDto,
|
||||
authUser: User,
|
||||
workspaceId: string,
|
||||
): Promise<void> {
|
||||
const space = await this.spaceRepo.findById(dto.spaceId, workspaceId);
|
||||
|
||||
@ -147,15 +147,11 @@ export class SpaceController {
|
||||
throw new ForbiddenException();
|
||||
}
|
||||
|
||||
return this.spaceMemberService.removeMemberFromSpace(
|
||||
dto,
|
||||
user,
|
||||
workspace.id,
|
||||
);
|
||||
return this.spaceMemberService.removeMemberFromSpace(dto, workspace.id);
|
||||
}
|
||||
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@Post('members/role')
|
||||
@Post('members/change-role')
|
||||
async updateSpaceMemberRole(
|
||||
@Body() dto: UpdateSpaceMemberRoleDto,
|
||||
@AuthUser() user: User,
|
||||
@ -168,11 +164,7 @@ export class SpaceController {
|
||||
throw new ForbiddenException();
|
||||
}
|
||||
|
||||
return this.spaceMemberService.updateSpaceMemberRole(
|
||||
dto,
|
||||
user,
|
||||
workspace.id,
|
||||
);
|
||||
return this.spaceMemberService.updateSpaceMemberRole(dto, workspace.id);
|
||||
}
|
||||
|
||||
validateIds(dto: RemoveSpaceMemberDto | UpdateSpaceMemberRoleDto) {
|
||||
|
||||
@ -91,7 +91,7 @@ export class WorkspaceController {
|
||||
ability.can(Action.Manage, 'WorkspaceUser'),
|
||||
)
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@Post('members/role')
|
||||
@Post('members/change-role')
|
||||
async updateWorkspaceMemberRole(
|
||||
@Body() workspaceUserRoleDto: UpdateWorkspaceUserRoleDto,
|
||||
@AuthUser() authUser: User,
|
||||
|
||||
@ -120,17 +120,25 @@ export class SpaceRepo {
|
||||
}
|
||||
|
||||
withMemberCount(eb: ExpressionBuilder<DB, 'spaces'>) {
|
||||
return eb
|
||||
const subquery = eb
|
||||
.selectFrom('spaceMembers')
|
||||
.innerJoin('groups', 'groups.id', 'spaceMembers.groupId')
|
||||
.innerJoin('groupUsers', 'groupUsers.groupId', 'groups.id')
|
||||
.select((eb) =>
|
||||
eb.fn
|
||||
.count(sql`concat(space_members.user_id, group_users.user_id)`)
|
||||
.distinct()
|
||||
.as('count'),
|
||||
)
|
||||
.select('spaceMembers.userId')
|
||||
.where('spaceMembers.userId', 'is not', null)
|
||||
.whereRef('spaceMembers.spaceId', '=', 'spaces.id')
|
||||
.union(
|
||||
eb
|
||||
.selectFrom('spaceMembers')
|
||||
.where('spaceMembers.groupId', 'is not', null)
|
||||
.leftJoin('groups', 'groups.id', 'spaceMembers.groupId')
|
||||
.leftJoin('groupUsers', 'groupUsers.groupId', 'groups.id')
|
||||
.select('groupUsers.userId')
|
||||
.whereRef('spaceMembers.spaceId', '=', 'spaces.id'),
|
||||
)
|
||||
.as('userId');
|
||||
|
||||
return eb
|
||||
.selectFrom(subquery)
|
||||
.select((eb) => eb.fn.count('userId').as('count'))
|
||||
.as('memberCount');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user