diff --git a/src/Scaffolding/Definitions.php b/src/Scaffolding/Definitions.php index 9b22139c3b9a8c13ee708471a1a578638a1b0ddd..0de4c45ef2e31ce0b259184ac93368893d4bfdaf 100644 --- a/src/Scaffolding/Definitions.php +++ b/src/Scaffolding/Definitions.php @@ -2,6 +2,7 @@ namespace Grifart\Tables\Scaffolding; +use Grifart\ClassScaffolder\Capabilities\Capability; use Grifart\ClassScaffolder\Definition\ClassDefinition; @@ -29,19 +30,22 @@ final class Definitions implements \IteratorAggregate ); } - public function getRowClass(): ClassDefinition + public function rowClassWith(Capability $capability, Capability ...$capabilities): self { - return $this->rowClass; + $this->rowClass = $this->rowClass->with($capability, ...$capabilities); + return $this; } - public function getModificationsClass(): ClassDefinition + public function modificationsClassWith(Capability $capability, Capability ...$capabilities): self { - return $this->modificationsClass; + $this->modificationsClass = $this->modificationsClass->with($capability, ...$capabilities); + return $this; } - public function getTableClass(): ClassDefinition + public function tableClassWith(Capability $capability, Capability ...$capabilities): self { - return $this->tableClass; + $this->tableClass = $this->tableClass->with($capability, ...$capabilities); + return $this; } diff --git a/src/Scaffolding/Scaffolding.php b/src/Scaffolding/Scaffolding.php index 1a8e8bdc053d204786d93265149488ab84b5b76e..4f4278e437b071b2c4183c27f215af9558fb4928 100644 --- a/src/Scaffolding/Scaffolding.php +++ b/src/Scaffolding/Scaffolding.php @@ -39,45 +39,13 @@ final class Scaffolding string $primaryKeyClass ): Definitions { - return self::buildersForPgTable( - $pgReflector, - $mapper, - $schema, - $table, - $rowClassName, - $modificationsClassName, - $tableClassName, - $primaryKeyClass, - ); - } - - - /** - * Usage: - * ```php - * $builders = Scaffolding::buildersForPgTable(...); - * $builders->getRowClass()->decorate(...); - * return $builders; - * ``` - */ - public static function buildersForPgTable( - PostgresReflector $pgReflector, - TypeMapper $mapper, - string $schema, - string $tableClass, - string $rowClassName, - string $modificationsClassName, - string $tableClassName, - string $primaryKeyClass - ): Definitions - { - $columnsNativeTypes = $pgReflector->retrieveColumnInfo($schema, $tableClass); + $columnsNativeTypes = $pgReflector->retrieveColumnInfo($schema, $table); if (\count($columnsNativeTypes) === 0) { throw new \LogicException('No columns found for given configuration. Does referenced table exist?'); } - $location = function(string $column) use ($schema, $tableClass): string { - return self::location($schema, $tableClass, $column); + $location = function(string $column) use ($schema, $table): string { + return self::location($schema, $table, $column); }; $columnsPhpTypes = []; @@ -109,7 +77,7 @@ final class Scaffolding $tableClass = (new ClassDefinition($tableClassName)) ->with(new TableImplementation( $schema, - $tableClass, + $table, $primaryKeyClass, $rowClassName, $modificationsClassName,