/** * @param PostTodo $command * @throws \Prooph\ProophessorDo\Model\User\Exception\UserNotFound */ public function __invoke(PostTodo $command) { $user = $this->userCollection->get($command->assigneeId()); if (!$user) { throw UserNotFound::withUserId($command->assigneeId()); } $todo = $user->postTodo($command->text(), $command->todoId()); $this->todoList->add($todo); }
$commandCount = NUMBER_OF_USERS * NUMBER_OF_TODO_PER_USER + NUMBER_OF_USERS; return $duration / $commandCount; } $container = (require 'config/container.php'); $commandBus = $container->get(\Prooph\ServiceBus\CommandBus::class); $openTodos = []; $stopWatch = new Stopwatch(); $stopWatch->start('generate_model'); for ($i = 1; $i <= NUMBER_OF_USERS; $i++) { $userId = UserId::generate(); $username = getUserName($i); $email = $username . '@acme.com'; $commandBus->dispatch(RegisterUser::withData($userId->toString(), $username, $email)); for ($j = 0; $j < NUMBER_OF_TODO_PER_USER; $j++) { $todoId = TodoId::generate(); $commandBus->dispatch(PostTodo::forUser($userId->toString(), randTodoText(), $todoId->toString())); $openTodos[] = $todoId->toString(); } echo "User: "******"(" . $userId->toString() . ") was registered\n"; } $generatedEvent = $stopWatch->stop('generate_model'); echo "\nModel generated in: " . $generatedEvent->getDuration() . " ms\n"; echo "Command execution average: " . calcCommandAverage($generatedEvent->getDuration()) . " ms\n"; echo "\nGoing to close todo randomly now\n"; foreach ($openTodos as $openTodoId) { $close = rand(0, 1); if ($close) { $commandBus->dispatch(MarkTodoAsDone::forTodo($openTodoId)); } } echo "Done! Check out proophessor-do";