setName('deck:export') ->setDescription('Export a JSON dump of user data') ->addArgument( 'user-id', InputArgument::REQUIRED, 'User ID of the user' ) ->addOption('legacy-format', 'l') ; } /** * @throws Exception */ protected function execute(InputInterface $input, OutputInterface $output): int { $userId = $input->getArgument('user-id'); $legacyFormat = $input->getOption('legacy-format'); $this->boardService->setUserId($userId); $boards = $this->boardService->findAll(fullDetails: false); $data = []; foreach ($boards as $board) { $fullBoard = $this->boardMapper->find($board->getId(), true, true); $data[$board->getId()] = $fullBoard->jsonSerialize(); $stacks = $this->stackMapper->findAll($board->getId()); foreach ($stacks as $stack) { $data[$board->getId()]['stacks'][$stack->getId()] = $stack->jsonSerialize(); $cards = $this->cardMapper->findAllByStack($stack->getId()); foreach ($cards as $card) { $fullCard = $this->cardMapper->find($card->getId()); $assignedUsers = $this->assignedUsersMapper->findAll($card->getId()); $fullCard->setAssignedUsers($assignedUsers); $cardDetails = new CardDetails($fullCard, $fullBoard); $data[$board->getId()]['stacks'][$stack->getId()]['cards'][] = $cardDetails->jsonSerialize(); } } } $output->writeln(json_encode( $legacyFormat ? $data : [ 'version' => $this->appManager->getAppVersion('deck'), 'boards' => $data ], JSON_PRETTY_PRINT)); return 0; } }