template-backend/bin/doctrine-migrations.php
2024-02-14 20:12:27 +01:00

92 lines
3.2 KiB
PHP

<?php
require_once __DIR__ . '/../config/autoload/defines.php';
require APP_ROOT . '/vendor/autoload.php';
use Template\Data\Business\Manager\TemplateEntityManager;
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_template_annotation_driver']['paths'];
$dbParams = $doctrineConfig['connection']['orm_template']['params'];
$migrationsConf = $doctrineConfig['migrations_configuration']['orm_template'];
$reader = new AnnotationReader();
$driver = new AnnotationDriver($reader, $paths);
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$config->setMetadataDriverImpl($driver);
$entityManager = $container->get(TemplateEntityManager::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();
}