Skip to content

Commit 87f36fe

Browse files
authored
Add RevisionDiscovererFactory to simplify common construction (#15)
1 parent 5e74464 commit 87f36fe

File tree

2 files changed

+33
-12
lines changed

2 files changed

+33
-12
lines changed

README.md

+4-12
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,15 @@ An SQL database migrations library based on [AMP](https://amphp.org). Currently
99
```php
1010
use Amp\Mysql\MysqlConfig;
1111
use Amp\Sync\LocalMutex;
12-
use Amp\Sync\Mutex;
13-
use BenChallis\SqlMigrations\ClassDiscovery\Composer\AutoloaderClassDiscovererFactory;
1412
use BenChallis\SqlMigrations\ClassDiscovery\PhpNamespace;
15-
use BenChallis\SqlMigrations\Migration\Discovery\RevisionClassDiscoverer;
16-
use BenChallis\SqlMigrations\Migration\Discovery\RevisionDiscoverer;
13+
use BenChallis\SqlMigrations\ClassDiscovery\ReadableDirectory;
14+
use BenChallis\SqlMigrations\Migration\Discovery\RevisionDiscovererFactory;
1715
use BenChallis\SqlMigrations\Migration\Metadata\MySql\MySqlMetadataStore;
1816
use BenChallis\SqlMigrations\Migration\Metadata\MySql\MySqlSchemaManager;
1917
use BenChallis\SqlMigrations\Migration\Metadata\SchemaUpdatingMetadataStore;
2018
use BenChallis\SqlMigrations\Migration\MigrationCollector;
2119
use BenChallis\SqlMigrations\Migration\MigrationsFactory;
2220
use BenChallis\SqlMigrations\Migration\Migrator;
23-
use BenChallis\SqlMigrations\Migration\Revision\SimpleRevisionFactory;
2421
use function Amp\Mysql\connect;
2522

2623
$connection = connect(MysqlConfig::fromAuthority(DB_HOST, DB_USER, DB_PASS, DB_DATABASE));
@@ -34,14 +31,9 @@ $migrations = MigrationsFactory::create(
3431
$metadata,
3532
new MigrationCollector(
3633
$metadata,
37-
new RevisionDiscoverer(
38-
new RevisionClassDiscoverer(
39-
(new AutoloaderClassDiscovererFactory())->fromVendorDirectory(__DIR__.'/vendor')
40-
),
41-
new SimpleRevisionFactory(),
42-
)
34+
RevisionDiscovererFactory::create(ReadableDirectory::fromString(__DIR__.'/vendor')),
4335
),
44-
PhpNamespace::fromString('App\Migrations')
36+
PhpNamespace::fromString('App\Migrations'),
4537
);
4638

4739
$migrator = new Migrator($migrations, $connection);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace BenChallis\SqlMigrations\Migration\Discovery;
6+
7+
use BenChallis\SqlMigrations\ClassDiscovery\Composer\AutoloaderClassDiscovererFactory;
8+
use BenChallis\SqlMigrations\ClassDiscovery\ReadableDirectory;
9+
use BenChallis\SqlMigrations\Migration\Revision\RevisionFactory;
10+
use BenChallis\SqlMigrations\Migration\Revision\SimpleRevisionFactory;
11+
12+
final class RevisionDiscovererFactory
13+
{
14+
private function __construct()
15+
{
16+
}
17+
18+
public static function create(
19+
ReadableDirectory $vendorDirectory,
20+
RevisionFactory $revisionFactory = new SimpleRevisionFactory(),
21+
): RevisionDiscoverer {
22+
return new RevisionDiscoverer(
23+
new RevisionClassDiscoverer(
24+
(new AutoloaderClassDiscovererFactory())->fromVendorDirectory($vendorDirectory),
25+
),
26+
$revisionFactory,
27+
);
28+
}
29+
}

0 commit comments

Comments
 (0)