/** * Execute this command. * * @return int|void */ protected function doExecute() { $model = new SchemaModel(); $this->out()->out('Backing up...'); // Backup $model->backup(); $this->out()->out(sprintf('Database backup to: %s', $model->getState()->get('dump.path'))); return; }
/** * Execute this command. * * @throws \RuntimeException * @return int|void */ protected function doExecute() { $type = $this->getOption('s') ? 'sql' : 'yaml'; $model = new SchemaModel(); $path = $model->getPath($type); if (file_exists($path) && !$this->getOption('y')) { $prompter = new BooleanPrompter('This action will compare and update your sql schema [Y/n]: '); if (!$prompter->ask()) { $this->out('cancelled.'); return; } } elseif (!file_exists($path)) { throw new \RuntimeException('Schema file not exists.'); } $force = $this->getOption('f'); if ($force) { throw new \RuntimeException('Sorry, force mode not prepare yet...'); } $state = $model->getState(); if ($this->getOption('a')) { $profiles = ProfileHelper::getAllProfiles(); } else { $profiles = $this->io->getArguments() ?: array(ProfileHelper::getProfile()); } $config = Factory::getConfig(); foreach ($profiles as $profile) { $config->set('profile', $profile); // Backup $this->out()->out(sprintf('<comment>Backing up</comment> profile <info>%s</info> ...', $profile)); $model->backup(); $this->out()->out(sprintf('Schema file backup to: %s', $model->getState()->get('dump.path'))); // Import $this->out()->out(sprintf('<option>Importing</option> profile schema: <info>%s</info> ...', $profile)); $model->import($force, $type); $this->out()->out(sprintf('Schema file dumped to: %s', $model->getState()->get('dump.path'))); // Report $analyze = $state->get('import.analyze'); foreach ($analyze as $table => $schema) { $this->out()->out($table . ':'); foreach ($schema as $action => $count) { $this->out(' ' . $action . ': ' . $count); } } } return; }