fix space member count

* fix space added_by_id
* rename user role change endpoints
This commit is contained in:
Philipinho
2024-05-24 15:59:20 +01:00
parent ccf9d5d99f
commit 046dd6d150
6 changed files with 25 additions and 27 deletions

View File

@ -43,5 +43,5 @@ export async function removeSpaceMember(
export async function changeMemberRole(
data: IChangeSpaceMemberRole,
): Promise<void> {
await api.post("/spaces/members/role", data);
await api.post("/spaces/members/change-role", data);
}

View File

@ -36,7 +36,7 @@ export async function changeMemberRole(data: {
userId: string;
role: string;
}): Promise<void> {
await api.post("/workspace/members/role", data);
await api.post("/workspace/members/change-role", data);
}
export async function getPendingInvitations(

View File

@ -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);

View File

@ -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) {

View File

@ -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,

View File

@ -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');
}