예제 #1
0
 /**
  * @internal param \Dive\Console\OutputWriterInterface $outputWriter
  * @return bool
  */
 public function execute()
 {
     $this->schema = $this->getSchema();
     $this->createModelGenerator();
     $targetDirectory = $this->getParam('target-dir');
     $missingModels = $this->modelGenerator->getMissingModels($this->schema, $targetDirectory);
     $wroteModels = $this->writeModelFiles($missingModels, 'New model classes: ');
     $overwriteExistingModels = $this->getBooleanParam('overwrite', null);
     if ($overwriteExistingModels === null) {
         $overwriteExistingModels = $this->readInput('Do you want to overwrite existing model classes? [yes,no]');
     }
     if ($overwriteExistingModels) {
         $this->outputWriter->writeLine('Existing model classes will be overwritten!');
         $existingModels = $this->modelGenerator->getMissingModels($this->schema, $targetDirectory);
         $wroteExistingModels = $this->writeModelFiles($existingModels, 'Overwritten model classes: ');
         if ($wroteExistingModels) {
             $wroteModels = true;
         }
     } else {
         $this->outputWriter->writeLine('Existing model classes will NOT be overwritten!');
     }
     if (!$wroteModels) {
         $this->outputWriter->writeLine("WARNING: No models have been generated!\n" . "  To generate model classes, you have to specify the key 'recordClass'\n" . "  for each table in your schema file!");
     }
     return true;
 }
예제 #2
0
 /**
  * @param string[] $expectedNotExistingModels
  * @dataProvider provideIteration
  */
 public function testCreateNeededModels(array $expectedNotExistingModels)
 {
     $schema = $this->getSchema();
     $missingModels = $this->modelGenerator->getMissingModels($schema, self::$targetDirectory);
     $formatter = $this->getFormatter();
     $this->assertEquals($expectedNotExistingModels, $missingModels, '', 0, 10, true);
     $fileNames = array();
     $modelFileNames = array();
     foreach ($missingModels as $missingModel) {
         $fileName = $formatter->getTargetFileName($missingModel, self::$targetDirectory);
         $this->assertFileNotExists($fileName);
         $fileNames[] = $fileName;
         $modelFileNames[$fileName] = $missingModel;
     }
     // create files
     $this->modelGenerator->writeMissingModelFiles($schema, self::$targetDirectory);
     // check created
     foreach ($fileNames as $fileName) {
         $this->assertFileExists($fileName);
         $classContent = $this->modelGenerator->getContent($modelFileNames[$fileName], $schema);
         $this->assertStringEqualsFile($fileName, $classContent);
     }
 }