Beispiel #1
0
 function init(Master $master, DBAL $adapter)
 {
     if (!$master->getJobs()->findByPk(array('id_job' => 0))) {
         $job = $master->create('job', array('name' => 'Scheduler', 'status' => 'A', 'system' => true));
         $job->save();
         $adapter->commit();
     }
 }
Beispiel #2
0
 public function migrate()
 {
     if (empty($this->toSchema)) {
         throw new \Exception("To schema not defined in Generator\\Database");
     }
     if (empty($this->fromSchema)) {
         throw new \Exception("From schema not defined in Generator\\Database");
     }
     $sql = $this->fromSchema->getMigrateToSql($this->toSchema, $this->dbal->getDatabasePlatform());
     return $sql;
 }
Beispiel #3
0
 public function testDelete()
 {
     /**
      * Log models delete test
      */
     \DatabaseManager::generateFakeRecords();
     $admin = $this->personRepository->findOne(array('login' => 'admin'));
     $admin->delete();
     $map = $this->getRepositoryMap($this->personRepository);
     $this->assertCount(0, $map);
     $rows = $this->dbal->fetchAll("select * from person where login = '******'");
     $this->assertCount(1, $rows);
     $adminRow = $rows[0];
     $this->assertLessThanOrEqual(time(), strtotime($adminRow['v_end']));
     /**
      * Delete test for model without log behaviour
      */
     $newModule = $this->moduleRepository->create(array('name' => 'Name'));
     $newModule->save();
     $map = $this->getRepositoryMap($this->moduleRepository);
     $this->assertCount(1, $map);
     $newModule->delete();
     $map = $this->getRepositoryMap($this->moduleRepository);
     $this->assertCount(0, $map);
     $rows = $this->dbal->fetchAll("select * from module");
     $this->assertCount(1, $rows);
     // there is 1 backend module
     \DatabaseManager::clearTables();
 }
Beispiel #4
0
 public function clearDatabase()
 {
     $schemaManager = $this->adapter->getSchemaManager();
     foreach ($schemaManager->listTables() as $table) {
         foreach ($table->getForeignKeys() as $fk) {
             $schemaManager->dropForeignKey($fk->getName(), $table->getName());
         }
     }
     foreach ($schemaManager->listTables() as $table) {
         $this->adapter->executeQuery("drop table {$table->getName()}");
     }
     // sqlite has no sequences
     if ($schemaManager->getDatabasePlatform()->getName() == 'sqlite') {
         return;
     }
     foreach ($schemaManager->listSequences() as $sequence) {
         $schemaManager->dropSequence($sequence->getName());
     }
 }
Beispiel #5
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $fs = new Filesystem();
     $schema = $this->application->getStorage()->getSchema();
     // create.sql
     $dbalToSchema = $this->dbalConverter->convert($schema);
     $dbalFromSchema = $schema = new \Doctrine\DBAL\Schema\Schema();
     $this->generator->setToSchema($dbalToSchema);
     $this->generator->setFromSchema($dbalFromSchema);
     $queries = $this->generator->migrate();
     $debug = $input->getArgument('debug') == true;
     $create = $this->application->getProject()->getPath('build sql create.sql');
     if ($debug) {
         echo "- build create.sql" . PHP_EOL;
     }
     $output->writeln('Create ' . $create);
     $fs->dumpFile($create, implode(";\n", $queries) . ';');
     // migrate.sql
     $dbalFromSchema = $this->dbal->getSchemaManager()->createSchema();
     $this->generator->setFromSchema($dbalFromSchema);
     $queries = $this->generator->migrate();
     $migrate = $this->application->getProject()->getPath('build sql migrate.sql');
     if ($debug) {
         echo "- build migrate.sql" . PHP_EOL;
     }
     $output->writeln('Create ' . $migrate);
     $fs->dumpFile($migrate, implode(";\n", $queries) . (count($queries) ? ';' : ''));
     if (!$debug) {
         echo implode(";\n", $queries) . ';';
     }
     if ($input->getOption('test') != true) {
         foreach ($queries as $query) {
             $this->dbal->executeQuery($query);
         }
         if ($input->getOption('commit') == true) {
             $this->dbal->commit();
         }
     }
 }
Beispiel #6
0
 function init(Init $init, Master $master, DBAL $adapter)
 {
     $system = $master->getJobs()->findOne(array('system' => true));
     $now = $adapter->fetchNow();
     if ($system->getActiveTask()) {
         $message = sprintf("Task %s is running", $system->getActiveTask()->getIdTask());
         if ($this->createSystemFail) {
             $task = $system->createActiveTask()->setDtEnd($now)->setStatus('F')->save();
             $task->log($message);
         }
         throw new \Exception($message);
     }
     $task = $system->createActiveTask();
     $tasks = $master->getTasks()->findWhere('dt_scheduled < :now and status = :status', array('now' => $now, 'status' => 'N'));
     if (count($tasks)) {
         $task->log(sprintf('Found %s task(s).', count($tasks)));
         foreach ($tasks as $task) {
             //
         }
     } else {
         $task->log('No tasks found');
     }
     $task->setDtEnd($adapter->fetchNow(true))->setStatus('C')->save();
 }
Beispiel #7
0
 public function testManyToManyDelete()
 {
     \DatabaseManager::generateFakeRecords();
     $admin = $this->personRepository->findOne(array('login' => 'admin'));
     $backend = $this->moduleRepository->findOne(array('name' => 'Backend'));
     $admin->addModuleDeveloperLink($backend);
     $links = $admin->getModuleDeveloperLinks();
     $this->assertCount(1, $links);
     $link = $links[0];
     $link->delete();
     $links = $admin->getModuleDeveloperLinks();
     $this->assertCount(0, $links);
     $rows = $this->dbal->fetchAll("select * from module_developer_link");
     $this->assertCount(1, $rows);
     $now = $this->dbal->fetchNow();
     $this->assertLessThanOrEqual(strtotime($now), $rows[0]['v_end']);
     \DatabaseManager::clearTables();
 }
Beispiel #8
0
 function deleteJob($id_job, JobRepository $repository)
 {
     $repository->findByPk(array('id_job' => $id_job))->delete();
     $this->database->commit();
 }