Skip to content

Commit f27759e

Browse files
committed
added experimental NextrasMigrationsBundle for Symfony
1 parent be7f252 commit f27759e

File tree

4 files changed

+157
-0
lines changed

4 files changed

+157
-0
lines changed

composer.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
"nette/utils": "~2.3",
1919
"nextras/dbal": "~1.0 | ~2.0",
2020
"mockery/mockery": "~0.9",
21+
"symfony/http-kernel": "~2.6 | ~3.0",
22+
"symfony/config": "~2.6 | ~3.0",
23+
"symfony/dependency-injection": "~2.6 | ~3.0",
2124
"symfony/console": "~2.6 | ~3.0",
2225
"ext-openssl": "*"
2326
},
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
/**
4+
* This file is part of the Nextras community extensions of Nette Framework
5+
*
6+
* @license New BSD License
7+
* @link https://github.com/nextras/migrations
8+
*/
9+
10+
namespace Nextras\Migrations\Bridges\SymfonyBundle\DependencyInjection;
11+
12+
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
13+
use Symfony\Component\Config\Definition\ConfigurationInterface;
14+
15+
16+
class Configuration implements ConfigurationInterface
17+
{
18+
public function getConfigTreeBuilder()
19+
{
20+
$treeBuilder = new TreeBuilder();
21+
$treeBuilder->root('nextras_migrations')->cannotBeEmpty()->children()
22+
->scalarNode('dir')
23+
->defaultValue('%kernel.root_dir%/NextrasMigrations')
24+
->cannotBeEmpty()
25+
->end()
26+
->enumNode('dbal')
27+
->values(['dibi', 'dibi2', 'dibi3', 'doctrine', 'nette', 'nextras'])
28+
->defaultValue('doctrine')
29+
->cannotBeEmpty()
30+
->end()
31+
->enumNode('driver')
32+
->values(['mysql', 'pgsql'])
33+
->cannotBeEmpty()
34+
->end()
35+
->scalarNode('diff_generator')
36+
->defaultValue('doctrine')
37+
->end()
38+
->booleanNode('with_dummy_data')
39+
->defaultFalse()
40+
->end()
41+
->scalarNode('ignored_queries_file')
42+
->defaultNull()
43+
->end()
44+
->end();
45+
46+
return $treeBuilder;
47+
}
48+
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
<?php
2+
3+
/**
4+
* This file is part of the Nextras community extensions of Nette Framework
5+
*
6+
* @license New BSD License
7+
* @link https://github.com/nextras/migrations
8+
*/
9+
10+
namespace Nextras\Migrations\Bridges\SymfonyBundle\DependencyInjection;
11+
12+
use Symfony\Component\DependencyInjection\ContainerBuilder;
13+
use Symfony\Component\DependencyInjection\Definition;
14+
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
15+
16+
17+
class NextrasMigrationsExtension extends Extension
18+
{
19+
/** @var array */
20+
protected $dbals = [
21+
'dibi' => 'Nextras\Migrations\Bridges\Dibi\DibiAdapter',
22+
'dibi2' => 'Nextras\Migrations\Bridges\Dibi\Dibi2Adapter',
23+
'dibi3' => 'Nextras\Migrations\Bridges\Dibi\Dibi3Adapter',
24+
'doctrine' => 'Nextras\Migrations\Bridges\DoctrineDbal\DoctrineAdapter',
25+
'nette' => 'Nextras\Migrations\Bridges\NetteDatabase\NetteAdapter',
26+
'nextras' => 'Nextras\Migrations\Bridges\NextrasDbal\NextrasAdapter',
27+
];
28+
29+
/** @var array */
30+
protected $drivers = [
31+
'mysql' => 'Nextras\Migrations\Drivers\MySqlDriver',
32+
'pgsql' => 'Nextras\Migrations\Drivers\PgSqlDriver',
33+
];
34+
35+
36+
public function load(array $configs, ContainerBuilder $container)
37+
{
38+
$config = $this->processConfiguration(new Configuration(), $configs);
39+
40+
$dbalAlias = $config['dbal'];
41+
$dbalDefinition = new Definition($this->dbals[$dbalAlias]);
42+
$dbalDefinition->setAutowired(TRUE);
43+
44+
$driverAlias = $config['driver'];
45+
$driverDefinition = new Definition($this->drivers[$driverAlias]);
46+
$driverDefinition->setAutowired(TRUE);
47+
48+
if ($config['diff_generator'] === 'doctrine') {
49+
$structureDiffGeneratorDefinition = new Definition('Nextras\Migrations\Bridges\DoctrineOrm\StructureDiffGenerator');
50+
$structureDiffGeneratorDefinition->setAutowired(TRUE);
51+
$structureDiffGeneratorDefinition->setArgument('$ignoredQueriesFile', $config['ignored_queries_file']);
52+
53+
} else {
54+
$structureDiffGeneratorDefinition = NULL;
55+
}
56+
57+
$configurationDefinition = new Definition('Nextras\Migrations\Configurations\DefaultConfiguration');
58+
$configurationDefinition->setArguments([$config['dir'], $driverDefinition, $config['with_dummy_data']]);
59+
$configurationDefinition->addMethodCall('setStructureDiffGenerator', [$structureDiffGeneratorDefinition]);
60+
61+
$continueCommandDefinition = new Definition('Nextras\Migrations\Bridges\SymfonyConsole\ContinueCommand');
62+
$continueCommandDefinition->setAutowired(TRUE);
63+
$continueCommandDefinition->addTag('console.command');
64+
65+
$createCommandDefinition = new Definition('Nextras\Migrations\Bridges\SymfonyConsole\CreateCommand');
66+
$createCommandDefinition->setAutowired(TRUE);
67+
$createCommandDefinition->addTag('console.command');
68+
69+
$resetCommandDefinition = new Definition('Nextras\Migrations\Bridges\SymfonyConsole\ResetCommand');
70+
$resetCommandDefinition->setAutowired(TRUE);
71+
$resetCommandDefinition->addTag('console.command');
72+
73+
$container->addDefinitions([
74+
'nextras_migrations.dbal' => $dbalDefinition,
75+
'nextras_migrations.driver' => $driverDefinition,
76+
'nextras_migrations.configuration' => $configurationDefinition,
77+
'nextras_migrations.continue_command' => $continueCommandDefinition,
78+
'nextras_migrations.create_command' => $createCommandDefinition,
79+
'nextras_migrations.reset_command' => $resetCommandDefinition,
80+
]);
81+
82+
if ($structureDiffGeneratorDefinition) {
83+
$container->addDefinitions([
84+
'nextras_migrations.structure_diff_generator' => $structureDiffGeneratorDefinition,
85+
]);
86+
}
87+
}
88+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
/**
4+
* This file is part of the Nextras community extensions of Nette Framework
5+
*
6+
* @license New BSD License
7+
* @link https://github.com/nextras/migrations
8+
*/
9+
10+
namespace Nextras\Migrations\Bridges\SymfonyBundle;
11+
12+
use Symfony\Component\HttpKernel\Bundle\Bundle;
13+
14+
15+
class NextrasMigrationsBundle extends Bundle
16+
{
17+
18+
}

0 commit comments

Comments
 (0)