Example #1
0
 public function testSelectNamedMigrationDir()
 {
     $config = new Config(['default_environment' => 'second', 'log_table_name' => 'custom_log_table_name', 'migration_dirs' => ['first' => 'first_dir', 'second' => 'second_dir'], 'environments' => ['first' => [], 'second' => []]]);
     $this->assertEquals('first_dir', $config->getMigrationDir());
     $this->assertEquals('first_dir', $config->getMigrationDir('first'));
     $this->assertEquals('second_dir', $config->getMigrationDir('second'));
     $this->setExpectedException('\\Phoenix\\Exception\\InvalidArgumentValueException', 'Directory "xxx" doesn\'t exist. Use: first, second');
     $config->getMigrationDir('xxx');
 }
Example #2
0
 protected function setUp()
 {
     $config = new Config(['migration_dirs' => [__DIR__ . '/../fake/structure/migration_directory_1/'], 'environments' => ['sqlite' => ['adapter' => 'sqlite', 'dsn' => 'sqlite::memory:']]]);
     $environmentConfig = $config->getEnvironmentConfig('sqlite');
     $pdo = new PDO($environmentConfig->getDsn());
     $adapter = new SqliteAdapter($pdo);
     $this->manager = new Manager($config, $adapter);
     $this->initMigration = new Init($adapter, $config->getLogTableName());
     $this->initMigration->migrate();
 }
Example #3
0
 private function check(InputInterface $input, OutputInterface $output)
 {
     try {
         $executedMigrations = $this->manager->executedMigrations();
     } catch (DatabaseQueryExecuteException $e) {
         $executedMigrations = false;
         if (!$this instanceof InitCommand) {
             $init = new InitCommand();
             $init->setConfig($this->config->getConfiguration());
             $init->execute($input, $output);
         }
     }
     if ($executedMigrations !== false && $this instanceof InitCommand) {
         throw new WrongCommandException('Phoenix was already initialized, run migrate or rollback command now.');
     }
 }
Example #4
0
<?php

use Phoenix\Config\Config;
use Phoenix\Database\Adapter\AdapterFactory;
use Phoenix\Migration\Init\Init;
use Phoenix\Migration\Manager;
require_once __DIR__ . '/../vendor/autoload.php';
$configuration = ['migration_dirs' => [__DIR__ . '/phoenix'], 'environments' => ['mysql' => ['adapter' => 'mysql', 'db_name' => 'libs', 'host' => 'localhost', 'username' => 'root', 'password' => '123', 'charset' => 'utf8'], 'sqlite_file' => ['adapter' => 'sqlite', 'dsn' => 'sqlite:' . __DIR__ . '/phoenix.sqlite'], 'sqlite' => ['adapter' => 'sqlite', 'dsn' => 'sqlite::memory:'], 'pgsql' => ['adapter' => 'pgsql', 'db_name' => 'libs', 'host' => 'localhost', 'username' => 'postgres', 'password' => '123', 'charset' => 'utf8']]];
foreach (array_keys($configuration['environments']) as $environment) {
    echo "Adapter: {$environment}\n";
    $config = new Config($configuration);
    $adapter = AdapterFactory::instance($config->getEnvironmentConfig($environment));
    $initMigration = new Init($adapter, $config->getLogTableName());
    $initMigration->migrate();
    $manager = new Manager($config, $adapter);
    $migrations = $manager->findMigrationsToExecute();
    foreach ($migrations as $migration) {
        $migration->migrate();
        $manager->logExecution($migration);
        $migration->rollback();
        $manager->removeExecution($migration);
        $migration->migrate();
        $manager->logExecution($migration);
        //        print_R($migration->getExecutedQueries());
    }
    echo "All OK\n\n";
}
Example #5
0
 /**
  * removes migration from log table
  * @param AbstractMigration $migration
  */
 public function removeExecution(AbstractMigration $migration)
 {
     $this->adapter->delete($this->config->getLogTableName(), $this->createData($migration));
 }