DeleteUserCommandHandler.java
package es.um.atica.faker.users.application.command;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import es.um.atica.faker.users.domain.repository.UsersReadRepository;
import es.um.atica.faker.users.domain.repository.UsersWriteRepository;
import es.um.atica.shared.domain.cqrs.CommandHandler;
import es.um.atica.shared.domain.events.EventBus;
@Component
public class DeleteUserCommandHandler implements CommandHandler<DeleteUserCommand>{
@Autowired
private UsersReadRepository usersReadRepository;
@Autowired
private UsersWriteRepository usersWriteRepository;
@Autowired
private EventBus eventBus;
@Override
public void handle(DeleteUserCommand command) {
// Idempotency
usersReadRepository.findUser(command.getId()).ifPresent((u)->{
u.deleteUser();
usersWriteRepository.deleteUser(u);
eventBus.publish(u);
});
}
}