92 lines
3.2 KiB
PHP
92 lines
3.2 KiB
PHP
<?php
|
|
|
|
require_once __DIR__ . '/../config/autoload/defines.php';
|
|
require APP_ROOT . '/vendor/autoload.php';
|
|
|
|
use MyTube\Data\Business\Manager\MyTubeEntityManager;
|
|
use Doctrine\Common\Annotations\AnnotationReader;
|
|
use Doctrine\DBAL\DriverManager;
|
|
use Doctrine\Migrations\Configuration\Configuration;
|
|
use Doctrine\Migrations\Configuration\Connection\ExistingConnection;
|
|
use Doctrine\Migrations\Configuration\Migration\ExistingConfiguration;
|
|
use Doctrine\Migrations\DependencyFactory;
|
|
use Doctrine\Migrations\Metadata\Storage\TableMetadataStorageConfiguration;
|
|
use Doctrine\Migrations\Tools\Console\Command\DumpSchemaCommand;
|
|
use Doctrine\Migrations\Tools\Console\Command\ExecuteCommand;
|
|
use Doctrine\Migrations\Tools\Console\Command\GenerateCommand;
|
|
use Doctrine\Migrations\Tools\Console\Command\LatestCommand;
|
|
use Doctrine\Migrations\Tools\Console\Command\ListCommand;
|
|
use Doctrine\Migrations\Tools\Console\Command\MigrateCommand;
|
|
use Doctrine\Migrations\Tools\Console\Command\RollupCommand;
|
|
use Doctrine\Migrations\Tools\Console\Command\StatusCommand;
|
|
use Doctrine\Migrations\Tools\Console\Command\SyncMetadataCommand;
|
|
use Doctrine\Migrations\Tools\Console\Command\VersionCommand;
|
|
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;
|
|
use Doctrine\ORM\Tools\Setup;
|
|
use Symfony\Component\Console\Application;
|
|
|
|
$isDevMode = true;
|
|
|
|
$container = require APP_ROOT . '/config/container.php';
|
|
$config = $container->get('config');
|
|
$doctrineConfig = $config['doctrine'];
|
|
$paths = $doctrineConfig['driver']['orm_log_annotation_driver']['paths'];
|
|
|
|
$dbParams = $doctrineConfig['connection']['orm_log']['params'];
|
|
$migrationsConf = $doctrineConfig['migrations_configuration']['orm_log'];
|
|
|
|
$reader = new AnnotationReader();
|
|
$driver = new AnnotationDriver($reader, $paths);
|
|
|
|
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
|
|
$config->setMetadataDriverImpl($driver);
|
|
$entityManager = $container->get(MyTubeEntityManager::class);
|
|
|
|
try {
|
|
$connection = DriverManager::getConnection($dbParams);
|
|
} catch (\Doctrine\DBAL\Exception $e) {
|
|
echo $e->getMessage();
|
|
exit;
|
|
}
|
|
|
|
$configuration = new Configuration($connection);
|
|
|
|
$configuration->addMigrationsDirectory(
|
|
$migrationsConf['namespace'],
|
|
$migrationsConf['directory']
|
|
);
|
|
$configuration->setAllOrNothing(true);
|
|
$configuration->setCheckDatabasePlatform(false);
|
|
|
|
$storageConfiguration = new TableMetadataStorageConfiguration();
|
|
$storageConfiguration->setTableName($migrationsConf['table']);
|
|
|
|
$configuration->setMetadataStorageConfiguration($storageConfiguration);
|
|
|
|
$dependencyFactory = DependencyFactory::fromConnection(
|
|
new ExistingConfiguration($configuration),
|
|
new ExistingConnection($connection)
|
|
);
|
|
|
|
$cli = new Application('Doctrine Migrations');
|
|
$cli->setCatchExceptions(true);
|
|
|
|
$cli->addCommands([
|
|
new DumpSchemaCommand($dependencyFactory),
|
|
new ExecuteCommand($dependencyFactory),
|
|
new GenerateCommand($dependencyFactory),
|
|
new LatestCommand($dependencyFactory),
|
|
new ListCommand($dependencyFactory),
|
|
new MigrateCommand($dependencyFactory),
|
|
new RollupCommand($dependencyFactory),
|
|
new StatusCommand($dependencyFactory),
|
|
new SyncMetadataCommand($dependencyFactory),
|
|
new VersionCommand($dependencyFactory),
|
|
]);
|
|
|
|
try {
|
|
$cli->run();
|
|
} catch (Exception $e) {
|
|
echo $e->getMessage();
|
|
}
|