/** * Executes a subcommand * * @param string $subcommand * @param array $arguments * @param OutputInterface $output */ public function executeSubCommand($subcommand, $arguments, OutputInterface $output) { try { switch ($subcommand) { case 'create': $databaseIdentifier = array_shift($arguments); $options = $arguments; if (!$databaseIdentifier) { throw new \InvalidArgumentException('Missing database identifier argument', 1412524227); } $database = $this->coordinator->createDatabase($databaseIdentifier, $options); if ($database) { $output->writeln(sprintf('<info>Created database %s</info>', $databaseIdentifier)); } break; case 'drop': $databaseIdentifier = array_shift($arguments); if (!$databaseIdentifier) { throw new \InvalidArgumentException('Missing database identifier argument', 1412524227); } $this->coordinator->dropDatabase($databaseIdentifier); $output->writeln(sprintf('<info>Dropped database %s</info>', $databaseIdentifier)); break; case 'list': case 'll': $databases = $this->coordinator->listDatabases(); if ($databases) { $output->writeln('<info>Databases:</info>'); foreach ($databases as $databaseIdentifier) { $output->writeln($databaseIdentifier); } } else { $output->writeln('<info>No databases found</info>'); } break; default: throw new \InvalidArgumentException(sprintf('Undefined sub command "%s"', $subcommand), 1412525230); } } catch (\Exception $exception) { $output->writeln('<error>' . $exception->getMessage() . '</error>'); } }
/** * Deletes a Document instance for the given RequestInfo * * @param RequestInfo $requestInfo * @return HandlerResultInterface */ public function delete(RequestInfo $requestInfo) { $database = $this->getDatabaseForRequestInfo($requestInfo); if (!$database) { throw new InvalidRequestParameterException(sprintf('Database with identifier "%s" not found', $requestInfo->getDatabaseIdentifier()), 1413035859); } // if (!$requestInfo->getDataIdentifier()) throw new InvalidRequestParameterException('Document identifier is missing', 1413035855); if ($requestInfo->getDataIdentifier()) { $document = $this->getDataForRequest($requestInfo); if (!$document) { throw new InvalidRequestParameterException(sprintf('Document with identifier "%s" not found in database "%s"', $requestInfo->getDataIdentifier(), $requestInfo->getDatabaseIdentifier()), 1413035855); } $database->remove($document); $this->eventEmitter->emit(Event::DOCUMENT_DELETED, array($document)); return new HandlerResult(204, sprintf('Document "%s" deleted', $requestInfo->getDataIdentifier())); } $databaseIdentifier = $database->getIdentifier(); $this->coordinator->dropDatabase($databaseIdentifier); $this->eventEmitter->emit(Event::DATABASE_DELETED, array($database)); return new HandlerResult(204, sprintf('Database "%s" deleted', $databaseIdentifier)); }