コード例 #1
0
ファイル: LoadCommand.php プロジェクト: inetprocess/sugarcli
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $logger = $this->getService('logger');
     $metadata_file = $input->getOption('metadata-file');
     $diff_opts = $this->getDiffOptions($input);
     if (!is_readable($metadata_file)) {
         $logger->error("Unable to access metadata file {$metadata_file}.");
         $output->writeln('');
         $output->writeln("Use \"{$this->getProgramName()} metadata:dump\" first to dump the current table state.");
         return ExitCode::EXIT_METADATA_NOT_FOUND;
     }
     try {
         $meta = new Metadata($logger, $this->getService('sugarcrm.pdo'), $metadata_file);
         $base = $meta->loadFromDb();
         $new = $meta->loadFromFile();
         $diff_res = $meta->diff($base, $new, $diff_opts['mode'], $diff_opts['fields']);
         $logger->info("Fields metadata loaded from {$metadata_file}.");
         if ($input->getOption('sql')) {
             $output->writeln($meta->generateSqlQueries($diff_res));
         }
         if ($input->getOption('force')) {
             $meta->executeQueries($diff_res);
             $output->writeln('DB updated successfuly.');
         } else {
             $output->writeln('No action done. Use --force to execute the queries.');
         }
     } catch (SugarException $e) {
         $logger->error('An error occured while loading the metadata.');
         $logger->error($e->getMessage());
         return ExitCode::EXIT_UNKNOWN_SUGAR_ERROR;
     }
 }
コード例 #2
0
 public function testRealDb()
 {
     $meta = new Metadata(new NullLogger(), $this->getPdo());
     $db = $meta->loadFromDb();
     $meta->setDefFile(__DIR__ . '/metadata/metadata_base.yaml');
     $base = $meta->loadFromFile();
     $this->assertEquals($base, $db);
     $meta->setDefFile(__DIR__ . '/metadata/metadata_new.yaml');
     $new = $meta->loadFromFile();
     $diff = $meta->diff($base, $new);
     $meta->executeQueries($diff);
     $expected = new \PHPUnit_Extensions_Database_DataSet_YamlDataSet(__DIR__ . '/metadata/db_new_dataset.yaml');
     $queryTable = $this->getConnection()->createQueryTable('fields_meta_data', 'SELECT * FROM fields_meta_data ORDER BY BINARY id ASC');
     $this->assertTablesEqual($expected->getTable('fields_meta_data'), $queryTable);
 }