コード例 #1
0
 /**
  * getExported
  *
  * @return array
  */
 public function getExported()
 {
     $path = ProfileHelper::getPath();
     $list = \JFolder::files($path . '/export/sql', '.', false, true);
     rsort($list);
     return $list;
 }
コード例 #2
0
 /**
  * Execute this command.
  *
  * @return int|void
  */
 protected function doExecute()
 {
     $type = $this->getOption('s') ? 'sql' : 'yaml';
     $model = new SchemaModel();
     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);
         // Check schema.
         $path = $model->getPath($type);
         if (file_exists($path) && !$this->getOption('y')) {
             $prompter = new BooleanPrompter(sprintf('Schema file <info>%s</info> exists, do you want to override it? [Y/n]: ', $profile));
             if (!$prompter->ask()) {
                 $this->out('cancelled.');
                 return;
             }
         }
         // Exporting
         $this->out()->out('<comment>Exporting</comment> profile schema: <info>' . $profile . '</info>');
         $model->export($type);
         $this->out()->out(sprintf('Schema file dumped to: <info>%s</info>', $model->getState()->get('dump.path')));
     }
     /*
     $yaml = $this->getOption('yaml');
     
     $exporter = $yaml ? new YamlExporter : new SqlExporter;
     
     $result = $exporter->export();
     
     $config = \JFactory::getConfig();
     
     $file = 'site-' . $config->get('db') . '-' . date('Y-m-d-H-i-s');
     
     if ($yaml)
     {
     	$file .= '.yml';
     }
     else
     {
     	$file .= '.sql';
     }
     
     $file = JCONSOLE . '/jconsole/resource/sql/export/' . ($yaml ? 'yaml/' : '') . $file;
     
     \JFile::write($file, $result);
     
     $this->out()->out(sprintf('Sql file dumped to: %s', $file));
     */
 }
コード例 #3
0
 /**
  * Execute this command.
  *
  * @return int|void
  */
 protected function doExecute()
 {
     $tableModel = new Table();
     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);
         $tableModel->sync();
         $path = $tableModel->getState()->get('track.save.path');
         $this->out()->out('Sync all tracking status to: ' . $path);
     }
     return;
 }
コード例 #4
0
ファイル: Track.php プロジェクト: lyrasoft/lyrasoft.github.io
 /**
  * Constructor
  */
 public function __construct()
 {
     $this->global = SQLSYNC_LIB . '/Resource/track.yml';
     $this->file = ProfileHelper::getPath() . '/track.yml';
     parent::__construct();
 }
コード例 #5
0
ファイル: Table.php プロジェクト: lyrasoft/lyrasoft.github.io
 /**
  * sync
  *
  * @return bool
  */
 public function sync()
 {
     $statusList = $this->status();
     $path = ProfileHelper::getPath() . '/track.yml';
     $trackList = array();
     foreach ($statusList as $status) {
         $trackList['table'][$status['table']] = $status['status'];
     }
     $track = new Registry($trackList);
     $trackModel = new Track();
     $trackModel->saveTrackList($track);
     $this->state->set('track.save.path', $trackModel->getState()->get('track.save.path'));
     return true;
 }
コード例 #6
0
 /**
  * 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;
 }
コード例 #7
0
 /**
  * getPath
  *
  * @param string $type
  *
  * @return string
  */
 public function getPath($type = 'yaml')
 {
     $ext = $type == 'yaml' ? 'yml' : $type;
     return ProfileHelper::getPath() . '/schema.' . $ext;
 }