From 80f3531d59b2e7d3abbe4dda884b89aa72aefd06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pudil?= <me@jiripudil.cz> Date: Thu, 20 Feb 2025 15:35:01 +0100 Subject: [PATCH] make factory generation opt-in instead of opt-out --- src/Scaffolding/Definitions.php | 17 +++------- src/Scaffolding/TablesDefinitions.php | 5 +-- tests/Fixtures/.definition.php | 2 +- tests/Fixtures/ConfigTableFactory.php | 42 ------------------------ tests/Fixtures/GeneratedTableFactory.php | 42 ------------------------ tests/Fixtures/PackagesTableFactory.php | 42 ------------------------ tests/Scaffolding/ScaffoldingTest.phpt | 2 +- 7 files changed, 8 insertions(+), 144 deletions(-) delete mode 100644 tests/Fixtures/ConfigTableFactory.php delete mode 100644 tests/Fixtures/GeneratedTableFactory.php delete mode 100644 tests/Fixtures/PackagesTableFactory.php diff --git a/src/Scaffolding/Definitions.php b/src/Scaffolding/Definitions.php index 35f5239..04f5efe 100644 --- a/src/Scaffolding/Definitions.php +++ b/src/Scaffolding/Definitions.php @@ -11,12 +11,13 @@ use Grifart\ClassScaffolder\Definition\ClassDefinition; */ final class Definitions implements \IteratorAggregate { + private ?ClassDefinition $factoryClass = null; + private function __construct( private ClassDefinition $rowClass, private ClassDefinition $modificationsClass, private ?ClassDefinition $primaryKeyClass, private ClassDefinition $tableClass, - private ?ClassDefinition $factoryClass, ) {} public static function from( @@ -24,7 +25,6 @@ final class Definitions implements \IteratorAggregate ClassDefinition $modificationsClass, ClassDefinition $primaryKeyClass, ClassDefinition $tableClass, - ClassDefinition $factoryClass, ): self { return new self( @@ -32,7 +32,6 @@ final class Definitions implements \IteratorAggregate $modificationsClass, $primaryKeyClass, $tableClass, - $factoryClass, ); } @@ -66,19 +65,13 @@ final class Definitions implements \IteratorAggregate return $this; } - public function factoryClassWith(Capability $capability, Capability ...$capabilities): self - { - $this->factoryClass = $this->factoryClass?->with($capability, ...$capabilities); - return $this; - } - - public function withoutFactory(): self + public function withFactory(): self { - $this->factoryClass = null; + $tableClassName = $this->tableClass->getFullyQualifiedName(); + $this->factoryClass = (new ClassDefinition($tableClassName . 'Factory'))->with(new TableFactoryImplementation($tableClassName)); return $this; } - public function getIterator(): \Traversable { yield $this->rowClass; diff --git a/src/Scaffolding/TablesDefinitions.php b/src/Scaffolding/TablesDefinitions.php index 805ac51..8f6a1b1 100644 --- a/src/Scaffolding/TablesDefinitions.php +++ b/src/Scaffolding/TablesDefinitions.php @@ -100,9 +100,6 @@ final class TablesDefinitions $columnPhpTypes, )); - $factoryClass = (new ClassDefinition($tableClassName . 'Factory')) - ->with(new TableFactoryImplementation($tableClassName)); - - return Definitions::from($rowClass, $modificationsClass, $primaryKeyClass, $tableClass, $factoryClass); + return Definitions::from($rowClass, $modificationsClass, $primaryKeyClass, $tableClass); } } diff --git a/tests/Fixtures/.definition.php b/tests/Fixtures/.definition.php index 7f6dc2a..155eba0 100644 --- a/tests/Fixtures/.definition.php +++ b/tests/Fixtures/.definition.php @@ -23,7 +23,7 @@ return [ TestModifications::class, TestsTable::class, TestPrimaryKey::class, - ), + )->withFactory(), ...$tableDefinitions->for( 'public', 'config', diff --git a/tests/Fixtures/ConfigTableFactory.php b/tests/Fixtures/ConfigTableFactory.php deleted file mode 100644 index de03067..0000000 --- a/tests/Fixtures/ConfigTableFactory.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/** - * Do not edit. This is generated file. Modify definition file instead. - */ - -declare(strict_types=1); - -namespace Grifart\Tables\Tests\Fixtures; - -use Dibi\IConnection; -use Grifart\Tables\SingleConnectionTableManager; -use Grifart\Tables\TableManager; -use Grifart\Tables\TypeResolver; - -final readonly class ConfigTableFactory implements \Grifart\Tables\TableFactory -{ - public function __construct( - private TableManager $tableManager, - private TypeResolver $typeResolver, - ) { - } - - - public function create(): ConfigTable - { - return new ConfigTable($this->tableManager, $this->typeResolver); - } - - - public function withTableManager(TableManager $tableManager): ConfigTable - { - return new ConfigTable($tableManager, $this->typeResolver); - } - - - public function withConnection(IConnection $connection): ConfigTable - { - $tableManager = new SingleConnectionTableManager($connection); - return new ConfigTable($tableManager, $this->typeResolver); - } -} diff --git a/tests/Fixtures/GeneratedTableFactory.php b/tests/Fixtures/GeneratedTableFactory.php deleted file mode 100644 index ac9413d..0000000 --- a/tests/Fixtures/GeneratedTableFactory.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/** - * Do not edit. This is generated file. Modify definition file instead. - */ - -declare(strict_types=1); - -namespace Grifart\Tables\Tests\Fixtures; - -use Dibi\IConnection; -use Grifart\Tables\SingleConnectionTableManager; -use Grifart\Tables\TableManager; -use Grifart\Tables\TypeResolver; - -final readonly class GeneratedTableFactory implements \Grifart\Tables\TableFactory -{ - public function __construct( - private TableManager $tableManager, - private TypeResolver $typeResolver, - ) { - } - - - public function create(): GeneratedTable - { - return new GeneratedTable($this->tableManager, $this->typeResolver); - } - - - public function withTableManager(TableManager $tableManager): GeneratedTable - { - return new GeneratedTable($tableManager, $this->typeResolver); - } - - - public function withConnection(IConnection $connection): GeneratedTable - { - $tableManager = new SingleConnectionTableManager($connection); - return new GeneratedTable($tableManager, $this->typeResolver); - } -} diff --git a/tests/Fixtures/PackagesTableFactory.php b/tests/Fixtures/PackagesTableFactory.php deleted file mode 100644 index 72bfcce..0000000 --- a/tests/Fixtures/PackagesTableFactory.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/** - * Do not edit. This is generated file. Modify definition file instead. - */ - -declare(strict_types=1); - -namespace Grifart\Tables\Tests\Fixtures; - -use Dibi\IConnection; -use Grifart\Tables\SingleConnectionTableManager; -use Grifart\Tables\TableManager; -use Grifart\Tables\TypeResolver; - -final readonly class PackagesTableFactory implements \Grifart\Tables\TableFactory -{ - public function __construct( - private TableManager $tableManager, - private TypeResolver $typeResolver, - ) { - } - - - public function create(): PackagesTable - { - return new PackagesTable($this->tableManager, $this->typeResolver); - } - - - public function withTableManager(TableManager $tableManager): PackagesTable - { - return new PackagesTable($tableManager, $this->typeResolver); - } - - - public function withConnection(IConnection $connection): PackagesTable - { - $tableManager = new SingleConnectionTableManager($connection); - return new PackagesTable($tableManager, $this->typeResolver); - } -} diff --git a/tests/Scaffolding/ScaffoldingTest.phpt b/tests/Scaffolding/ScaffoldingTest.phpt index a956c07..c484dcb 100644 --- a/tests/Scaffolding/ScaffoldingTest.phpt +++ b/tests/Scaffolding/ScaffoldingTest.phpt @@ -34,5 +34,5 @@ $results = $fileProcessor->processFile( }, ); -Assert::count(20, $results->getDefinitions()); +Assert::count(17, $results->getDefinitions()); Assert::true($results->isSuccessful()); -- GitLab