api/src/Application/User/Command/RemoveUserCommandHandler.ts   A
last analyzed

Complexity

Total Complexity 3
Complexity/F 3

Size

Lines of Code 29
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 24
mnd 2
bc 2
fnc 1
dl 0
loc 29
rs 10
bpm 2
cpm 3
noi 0
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A RemoveUserCommandHandler.execute 0 13 3
1
import { Inject } from '@nestjs/common';
2
import { CommandHandler } from '@nestjs/cqrs';
3
import { CantRemoveYourselfException } from 'src/Domain/User/Exception/CantRemoveYourselfException';
4
import { UserNotFoundException } from 'src/Domain/User/Exception/UserNotFoundException';
5
import { IUserRepository } from 'src/Domain/User/Repository/IUserRepository';
6
import { RemoveUserCommand } from './RemoveUserCommand';
7
8
@CommandHandler(RemoveUserCommand)
9
export class RemoveUserCommandHandler {
10
  constructor(
11
    @Inject('IUserRepository')
12
    private readonly userRepository: IUserRepository,
13
  ) {}
14
15
  public async execute({ id, currentUserId }: RemoveUserCommand): Promise<void> {
16
    if (id === currentUserId) {
17
      throw new CantRemoveYourselfException();      
18
    }
19
20
    const user = await this.userRepository.findOneById(id);
21
22
    if (!user) {
23
      throw new UserNotFoundException();
24
    }
25
26
    await this.userRepository.remove(user);
27
  }
28
}
29