From 3536596a6d78ec18efff1c1e9b3515d20a38108e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pudil?= <me@jiripudil.cz>
Date: Fri, 3 Dec 2021 15:51:59 +0100
Subject: [PATCH] generate promoted properties

---
 src/Scaffolding/Scaffolding.php         |  6 ++----
 src/Scaffolding/TableImplementation.php | 15 ++++-----------
 2 files changed, 6 insertions(+), 15 deletions(-)

diff --git a/src/Scaffolding/Scaffolding.php b/src/Scaffolding/Scaffolding.php
index 6d971b3..1a8e8bd 100644
--- a/src/Scaffolding/Scaffolding.php
+++ b/src/Scaffolding/Scaffolding.php
@@ -5,11 +5,10 @@ namespace Grifart\Tables\Scaffolding;
 use Grifart\ClassScaffolder\Definition\ClassDefinition;
 use Grifart\Tables\Row;
 use Grifart\Tables\TypeMapper;
+use function Grifart\ClassScaffolder\Capabilities\constructorWithPromotedProperties;
 use function Grifart\ClassScaffolder\Capabilities\getters;
 use function Grifart\ClassScaffolder\Capabilities\implementedInterface;
-use function Grifart\ClassScaffolder\Capabilities\initializingConstructor;
 use function Grifart\ClassScaffolder\Capabilities\privatizedConstructor;
-use function Grifart\ClassScaffolder\Capabilities\properties;
 use function Grifart\ClassScaffolder\Definition\Types\nullable;
 use function Grifart\ClassScaffolder\Definition\Types\resolve;
 
@@ -96,8 +95,7 @@ final class Scaffolding
 		$rowClass = $addTableFields(new ClassDefinition($rowClassName))
 			->with(
 				implementedInterface(Row::class),
-				properties(),
-				initializingConstructor(),
+				constructorWithPromotedProperties(),
 				privatizedConstructor(),
 				getters(),
 				new ReconstituteConstructor(),
diff --git a/src/Scaffolding/TableImplementation.php b/src/Scaffolding/TableImplementation.php
index f84aeb9..40bbf08 100644
--- a/src/Scaffolding/TableImplementation.php
+++ b/src/Scaffolding/TableImplementation.php
@@ -96,11 +96,6 @@ final class TableImplementation implements Capability
 		// Column references
 		// todo add - use constants? Or references to Column class?
 
-		$namespace->addUse(TableManager::class);
-		$classType->addProperty('tableManager')
-			->addComment('@var TableManager')
-			->setVisibility('private');
-
 		$classType->addMethod('find')
 			->setParameters([
 				(new Code\Parameter('primaryKey'))
@@ -238,13 +233,11 @@ final class TableImplementation implements Capability
 				'$this->tableManager->delete($this, $primaryKey);'
 			);
 
+		$namespace->addUse(TableManager::class);
 		$classType->addMethod('__construct')
-			->setParameters([
-				(new Code\Parameter('tableManager'))->setTypeHint(TableManager::class)
-			])
-			->setBody(
-				'$this->tableManager = $tableManager;'
-			);
+			->addPromotedParameter('tableManager')
+			->setType(TableManager::class)
+			->setPrivate();
 
 
 
-- 
GitLab