2
0

DatabaseCreateCommand.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace PhpDevCommunity\PaperORM\Command;
  3. use PhpDevCommunity\Console\Command\CommandInterface;
  4. use PhpDevCommunity\Console\InputInterface;
  5. use PhpDevCommunity\Console\Option\CommandOption;
  6. use PhpDevCommunity\Console\Output\ConsoleOutput;
  7. use PhpDevCommunity\Console\OutputInterface;
  8. use PhpDevCommunity\PaperORM\EntityManager;
  9. use PhpDevCommunity\PaperORM\EntityManagerInterface;
  10. class DatabaseCreateCommand implements CommandInterface
  11. {
  12. private EntityManagerInterface $entityManager;
  13. public function __construct(EntityManagerInterface $entityManager)
  14. {
  15. $this->entityManager = $entityManager;
  16. }
  17. public function getName(): string
  18. {
  19. return 'paper:database:create';
  20. }
  21. public function getDescription(): string
  22. {
  23. return 'Creates the database configured for PaperORM';
  24. }
  25. public function getOptions(): array
  26. {
  27. return [
  28. new CommandOption('if-not-exists', null, 'Only create the database if it does not already exist', true)
  29. ];
  30. }
  31. public function getArguments(): array
  32. {
  33. return [];
  34. }
  35. public function execute(InputInterface $input, OutputInterface $output): void
  36. {
  37. $io = ConsoleOutput::create($output);
  38. $platform = $this->entityManager->createDatabasePlatform();
  39. if ($input->hasOption('if-not-exists') && $input->getOptionValue('if-not-exists') === true) {
  40. $platform->createDatabaseIfNotExists();
  41. $io->info(sprintf('The SQL database "%s" has been successfully created (if it did not already exist).', $platform->getDatabaseName()));
  42. } else {
  43. $platform->createDatabase();
  44. $io->success(sprintf('The SQL database "%s" has been successfully created.', $platform->getDatabaseName()));
  45. }
  46. }
  47. }