Skip to content

Commit

Permalink
Merge pull request #91 from FlashBlack/organize_migrations
Browse files Browse the repository at this point in the history
Support option: organize_migrations
  • Loading branch information
eigan authored Feb 16, 2020
2 parents 30ab7c5 + 5c308c8 commit 10a636c
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 18 deletions.
17 changes: 17 additions & 0 deletions config/migrations.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,23 @@
'directory' => database_path('migrations'),
/*
|--------------------------------------------------------------------------
| Migration Organize Directory
|--------------------------------------------------------------------------
|
| Organize migrations file by directory.
| Possible values: "year", "year_and_month" and false
|
| false:
| directory/
| "year":
| directory/2020/
| "year_and_month":
| directory/2020/01/
|
*/
'organize_migrations' => false,
/*
|--------------------------------------------------------------------------
| Migration Namespace
|--------------------------------------------------------------------------
|
Expand Down
8 changes: 8 additions & 0 deletions src/Configuration/ConfigurationFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,14 @@ public function make(Connection $connection, $name = null)
$configuration->setMigrationsDirectory($directory);
$configuration->registerMigrationsFromDirectory($directory);

if ($migrationOrganisation = $config->get('organize_migrations', false)) {
if (0 === strcasecmp($migrationOrganisation, Configuration::VERSIONS_ORGANIZATION_BY_YEAR)) {
$configuration->setMigrationsAreOrganizedByYear();
} elseif (0 === strcasecmp($migrationOrganisation, Configuration::VERSIONS_ORGANIZATION_BY_YEAR_AND_MONTH)) {
$configuration->setMigrationsAreOrganizedByYearAndMonth();
}
}

return $configuration;
}
}
45 changes: 27 additions & 18 deletions tests/Configuration/ConfigurationFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,13 @@ public function test_can_make_configuration()
->once()
->with('migrations.default', [])
->andReturn([
'name' => 'Doctrine Migrations',
'namespace' => 'Database\\Migrations',
'table' => 'migrations',
'schema' => ['filter' => '/^(?).*$/'],
'directory' => database_path('migrations'),
'naming_strategy' => DefaultNamingStrategy::class,
'name' => 'Doctrine Migrations',
'namespace' => 'Database\\Migrations',
'table' => 'migrations',
'schema' => ['filter' => '/^(?).*$/'],
'directory' => database_path('migrations'),
'organize_migrations' => Configuration::VERSIONS_ORGANIZATION_BY_YEAR_AND_MONTH,
'naming_strategy' => DefaultNamingStrategy::class,
])
;

Expand All @@ -81,6 +82,8 @@ public function test_can_make_configuration()
$this->assertEquals('migrations', $configuration->getMigrationsTableName());
$this->assertInstanceOf(DefaultNamingStrategy::class, $configuration->getNamingStrategy());
$this->assertEquals(database_path('migrations'), $configuration->getMigrationsDirectory());
$this->assertEquals(true, $configuration->areMigrationsOrganizedByYear());
$this->assertEquals(true, $configuration->areMigrationsOrganizedByYearAndMonth());
}

public function test_can_make_configuration_for_custom_entity_manager()
Expand All @@ -96,12 +99,13 @@ public function test_can_make_configuration_for_custom_entity_manager()
->once()
->with('migrations.custom_entity_manager', [])
->andReturn([
'name' => 'Migrations',
'namespace' => 'Database\\Migrations\\Custom',
'table' => 'migrations',
'schema' => ['filter' => '/^(?!^(custom)$).*$/'],
'directory' => database_path('migrations/custom'),
'naming_strategy' => DefaultNamingStrategy::class,
'name' => 'Migrations',
'namespace' => 'Database\\Migrations\\Custom',
'table' => 'migrations',
'schema' => ['filter' => '/^(?!^(custom)$).*$/'],
'directory' => database_path('migrations/custom'),
'organize_migrations' => Configuration::VERSIONS_ORGANIZATION_BY_YEAR_AND_MONTH,
'naming_strategy' => DefaultNamingStrategy::class,
])
;

Expand All @@ -123,6 +127,8 @@ public function test_can_make_configuration_for_custom_entity_manager()
$this->assertEquals('migrations', $configuration->getMigrationsTableName());
$this->assertInstanceOf(DefaultNamingStrategy::class, $configuration->getNamingStrategy());
$this->assertEquals(database_path('migrations/custom'), $configuration->getMigrationsDirectory());
$this->assertEquals(true, $configuration->areMigrationsOrganizedByYear());
$this->assertEquals(true, $configuration->areMigrationsOrganizedByYearAndMonth());
}

public function test_returns_default_configuration_if_not_defined()
Expand All @@ -138,12 +144,13 @@ public function test_returns_default_configuration_if_not_defined()
->once()
->with('migrations.default', [])
->andReturn([
'name' => 'Doctrine Migrations',
'namespace' => 'Database\\Migrations',
'table' => 'migrations',
'schema' => ['filter' => '/^(?).*$/'],
'directory' => database_path('migrations'),
'naming_strategy' => DefaultNamingStrategy::class,
'name' => 'Doctrine Migrations',
'namespace' => 'Database\\Migrations',
'table' => 'migrations',
'schema' => ['filter' => '/^(?).*$/'],
'directory' => database_path('migrations'),
'organize_migrations' => Configuration::VERSIONS_ORGANIZATION_BY_YEAR_AND_MONTH,
'naming_strategy' => DefaultNamingStrategy::class,
])
;

Expand All @@ -162,6 +169,8 @@ public function test_returns_default_configuration_if_not_defined()
$this->assertEquals('migrations', $configuration->getMigrationsTableName());
$this->assertInstanceOf(DefaultNamingStrategy::class, $configuration->getNamingStrategy());
$this->assertEquals(database_path('migrations'), $configuration->getMigrationsDirectory());
$this->assertEquals(true, $configuration->areMigrationsOrganizedByYear());
$this->assertEquals(true, $configuration->areMigrationsOrganizedByYearAndMonth());
}

protected function tearDown()
Expand Down

0 comments on commit 10a636c

Please sign in to comment.