From d10418673825814264b0a21a86c25e0dc6014d75 Mon Sep 17 00:00:00 2001
From: Daniel Kurowski <daniel.kurowski@grifart.cz>
Date: Tue, 1 Jun 2021 09:47:20 +0200
Subject: [PATCH] Transformed Builders into Traversable

---
 src/Scaffolding/Builders.php    | 18 ++++++++----------
 src/Scaffolding/Scaffolding.php |  7 +++----
 2 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/src/Scaffolding/Builders.php b/src/Scaffolding/Builders.php
index dcffbd0..439104d 100644
--- a/src/Scaffolding/Builders.php
+++ b/src/Scaffolding/Builders.php
@@ -6,7 +6,10 @@ use Grifart\ClassScaffolder\Definition\ClassDefinition;
 use Grifart\ClassScaffolder\Definition\ClassDefinitionBuilder;
 
 
-final class Builders
+/**
+ * @implements \IteratorAggregate<ClassDefinition>
+ */
+final class Builders implements \IteratorAggregate
 {
 	private function __construct(
 		private ClassDefinitionBuilder $rowClass,
@@ -43,16 +46,11 @@ final class Builders
 	}
 
 
-	/**
-	 * @return ClassDefinition[]
-	 */
-	public function buildAll(): array
+	public function getIterator(): \Traversable
 	{
-		return [
-			$this->rowClass->build(),
-			$this->modificationsClass->build(),
-			$this->tableClass->build(),
-		];
+		yield $this->rowClass->build();
+		yield $this->modificationsClass->build();
+		yield $this->tableClass->build();
 	}
 
 }
diff --git a/src/Scaffolding/Scaffolding.php b/src/Scaffolding/Scaffolding.php
index 08cd2f9..b6a8367 100644
--- a/src/Scaffolding/Scaffolding.php
+++ b/src/Scaffolding/Scaffolding.php
@@ -27,7 +27,6 @@ final class Scaffolding
 	 * ```php
 	 * return Scaffolding::definitionsForPgTable(...);
 	 * ```
-	 * @return ClassDefinition[]
 	 */
 	public static function definitionsForPgTable(
 		PostgresReflector $pgReflector,
@@ -38,7 +37,7 @@ final class Scaffolding
 		string $modificationsClassName,
 		string $tableClassName,
 		string $primaryKeyClass
-	): array
+	): Builders
 	{
 		return self::buildersForPgTable(
 			$pgReflector,
@@ -49,7 +48,7 @@ final class Scaffolding
 			$modificationsClassName,
 			$tableClassName,
 			$primaryKeyClass,
-		)->buildAll();
+		);
 	}
 
 
@@ -58,7 +57,7 @@ final class Scaffolding
 	 * ```php
 	 * $builders = Scaffolding::buildersForPgTable(...);
 	 * $builders->getRowClass()->decorate(...);
-	 * return $builders->buildAll();
+	 * return $builders;
 	 * ```
 	 */
 	public static function buildersForPgTable(
-- 
GitLab