#!/usr/bin/env php
<?php
/**
 * Basic file to handle doctrine database migrations.
 *
 * @copyright YetiForce S.A.
 * @license   YetiForce Public License 7.0 (licenses/LicenseEN.txt or yetiforce.com)
 * @author    Klaudia Łozowska <k.lozowska@yetiforce.com>
 */

require_once __DIR__.'/vendor/autoload.php';

use Config\Db;
use Doctrine\DBAL\DriverManager;
use Doctrine\Migrations\Configuration\Migration\ConfigurationArray;
use Doctrine\Migrations\DependencyFactory;
use Doctrine\Migrations\Configuration\Connection\ExistingConnection;
use Doctrine\Migrations\Tools\Console\Command;
use Symfony\Component\Console\Application;

$config = require_once 'db-migrations-config.php';

$connection = DriverManager::getConnection([
	'dbname' => Db::$db_name,
	'user' => Db::$db_username,
	'password' => Db::$db_password,
	'host' => Db::$db_server,
	'port' => Db::$db_port,
	'driver' => 'pdo_mysql',
]);

$config = new ConfigurationArray($config);

$dependencyFactory = DependencyFactory::fromConnection($config, new ExistingConnection($connection));

$cli = new Application('Doctrine Migrations');
$cli->setCatchExceptions(true);

$cli->addCommands(array(
	new Command\DumpSchemaCommand($dependencyFactory),
	new Command\ExecuteCommand($dependencyFactory),
	new Command\GenerateCommand($dependencyFactory),
	new Command\LatestCommand($dependencyFactory),
	new Command\ListCommand($dependencyFactory),
	new Command\MigrateCommand($dependencyFactory),
	new Command\RollupCommand($dependencyFactory),
	new Command\StatusCommand($dependencyFactory),
	new Command\SyncMetadataCommand($dependencyFactory),
	new Command\VersionCommand($dependencyFactory),
));

$cli->run();
