feat: removeUsersByAdmin mutation added

This commit is contained in:
mirarifhasan
2024-01-29 21:20:56 +06:00
committed by Andrew Bastin
parent 2bde3f8b02
commit b53cbb093c
4 changed files with 96 additions and 6 deletions

View File

@@ -28,6 +28,7 @@ import { TeamMemberRole } from '../team/team.model';
import { ShortcodeService } from 'src/shortcode/shortcode.service';
import { ConfigService } from '@nestjs/config';
import { OffsetPaginationArgs } from 'src/types/input-types.args';
import { UserDeleteData } from 'src/user/user.model';
@Injectable()
export class AdminService {
@@ -418,6 +419,44 @@ export class AdminService {
return E.right(delUser.right);
}
/**
* Remove user accounts by UIDs
* @param userUid User UIDs
* @returns an Either of boolean or error
*/
async removeUserAccounts(userUIDs: string[]) {
const users = await this.userService.findNonAdminUsersByIds(userUIDs);
if (users.length === 0) return E.left(USER_NOT_FOUND);
const deletionPromises = users.map((user) => {
return this.userService
.deleteUserByUID(user)()
.then((res) => {
if (E.isLeft(res)) {
return {
userUID: user.uid,
success: false,
errorMessage: res.left,
} as UserDeleteData;
}
return {
userUID: user.uid,
success: true,
errorMessage: null,
} as UserDeleteData;
});
});
const promiseResult = await Promise.allSettled(deletionPromises);
const userDeleteResult = promiseResult.map((result) => {
if (result.status === 'fulfilled') {
return result.value;
}
});
return E.right(userDeleteResult);
}
/**
* Make a user an admin
* @param userUid User UID