Skip to content

Commit f90c6cb

Browse files
committed
Generate API description with JsonSchemaArray::fromFile() method
1 parent 2b7c1ba commit f90c6cb

File tree

7 files changed

+30
-12
lines changed

7 files changed

+30
-12
lines changed

src/Code/CommandDescription.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,10 @@ public function generate(
5050
$code = \sprintf(
5151
'$eventEngine->registerCommand(
5252
self::%s,
53-
new JsonSchemaArray(
54-
\json_decode(file_get_contents(\'%s\'), true, 512, \JSON_THROW_ON_ERROR)
55-
)
53+
JsonSchemaArray::fromFile(self::SCHEMA_PATH . \'%s\')
5654
);',
5755
$commandConstName,
58-
$jsonSchemaFilename
56+
\substr($jsonSchemaFilename, \strrpos($jsonSchemaFilename, DIRECTORY_SEPARATOR) + 1)
5957
);
6058
}
6159

src/Code/EventDescription.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,10 @@ public function generate(
5050
$code = \sprintf(
5151
'$eventEngine->registerEvent(
5252
self::%s,
53-
new JsonSchemaArray(
54-
\json_decode(file_get_contents(\'%s\'), true, 512, \JSON_THROW_ON_ERROR)
55-
)
53+
JsonSchemaArray::fromFile(self::SCHEMA_PATH . \'%s\')
5654
);',
5755
$eventConstName,
58-
$jsonSchemaFilename
56+
\substr($jsonSchemaFilename, \strrpos($jsonSchemaFilename, DIRECTORY_SEPARATOR) + 1)
5957
);
6058
}
6159

src/Command.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ public function generateApiDescription(
8484
): void {
8585
$classBuilder = $this->generateApiDescriptionFor($connection, $analyzer, $files, VertexType::TYPE_COMMAND);
8686

87+
if ($jsonSchemaFileName !== null) {
88+
$this->addSchemaPathConstant($classBuilder, $jsonSchemaFileName);
89+
}
90+
8791
/** @var CommandType $command */
8892
$command = $connection->identity();
8993

src/Event.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ public function generateApiDescription(
8484
): void {
8585
$classBuilder = $this->generateApiDescriptionFor($connection, $analyzer, $files, VertexType::TYPE_EVENT);
8686

87+
if ($jsonSchemaFileName !== null) {
88+
$this->addSchemaPathConstant($classBuilder, $jsonSchemaFileName);
89+
}
90+
8791
/** @var EventType $event */
8892
$event = $connection->identity();
8993

src/Helper/ApiDescriptionClassMapTrait.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,16 @@ private function generateApiDescriptionFor(
5555
return $classBuilder;
5656
}
5757

58+
public function addSchemaPathConstant(ClassBuilder $classBuilder, string $jsonSchemaFilename): void
59+
{
60+
$classBuilder->addConstant(
61+
ClassConstBuilder::fromScratch(
62+
'SCHEMA_PATH',
63+
\substr($jsonSchemaFilename, 0, \strrpos($jsonSchemaFilename, DIRECTORY_SEPARATOR) + 1)
64+
)->setPrivate()
65+
);
66+
}
67+
5868
private function generateApiDescriptionClassMapFor(
5969
VertexConnection $connection,
6070
EventSourcingAnalyzer $analyzer,

tests/CommandTest.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,10 @@ private function assertApiDescription(ClassBuilder $classBuilder): void
8080
final class Command implements EventEngineDescription
8181
{
8282
public const ADD_BUILDING = 'AddBuilding';
83+
private const SCHEMA_PATH = '/service/src/Domain/Api/_schema/';
8384
public static function describe(EventEngine $eventEngine) : void
8485
{
85-
$eventEngine->registerCommand(self::ADD_BUILDING, new JsonSchemaArray(\json_decode(file_get_contents('/service/src/Domain/Api/_schema/ADD_BUILDING.json'), true, 512, \JSON_THROW_ON_ERROR)));
86+
$eventEngine->registerCommand(self::ADD_BUILDING, JsonSchemaArray::fromFile(self::SCHEMA_PATH . 'ADD_BUILDING.json'));
8687
}
8788
}
8889
EOF;
@@ -198,10 +199,11 @@ private function assertApiDescriptionWithClassMap(ClassBuilder $classBuilder): v
198199
final class Command implements EventEngineDescription
199200
{
200201
public const ADD_BUILDING = 'AddBuilding';
202+
private const SCHEMA_PATH = '/service/src/Domain/Api/_schema/';
201203
public const CLASS_MAP = [self::ADD_BUILDING => AddBuilding::class];
202204
public static function describe(EventEngine $eventEngine) : void
203205
{
204-
$eventEngine->registerCommand(self::ADD_BUILDING, new JsonSchemaArray(\json_decode(file_get_contents('/service/src/Domain/Api/_schema/ADD_BUILDING.json'), true, 512, \JSON_THROW_ON_ERROR)));
206+
$eventEngine->registerCommand(self::ADD_BUILDING, JsonSchemaArray::fromFile(self::SCHEMA_PATH . 'ADD_BUILDING.json'));
205207
}
206208
}
207209
EOF;

tests/EventTest.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,10 @@ private function assertApiDescription(ClassBuilder $classBuilder): void
8080
final class Event implements EventEngineDescription
8181
{
8282
public const BUILDING_ADDED = 'BuildingAdded';
83+
private const SCHEMA_PATH = '/service/src/Domain/Api/_schema/';
8384
public static function describe(EventEngine $eventEngine) : void
8485
{
85-
$eventEngine->registerEvent(self::BUILDING_ADDED, new JsonSchemaArray(\json_decode(file_get_contents('/service/src/Domain/Api/_schema/BUILDING_ADDED.json'), true, 512, \JSON_THROW_ON_ERROR)));
86+
$eventEngine->registerEvent(self::BUILDING_ADDED, JsonSchemaArray::fromFile(self::SCHEMA_PATH . 'BUILDING_ADDED.json'));
8687
}
8788
}
8889
EOF;
@@ -198,10 +199,11 @@ private function assertApiDescriptionWithClassMap(ClassBuilder $classBuilder): v
198199
final class Event implements EventEngineDescription
199200
{
200201
public const BUILDING_ADDED = 'BuildingAdded';
202+
private const SCHEMA_PATH = '/service/src/Domain/Api/_schema/';
201203
public const CLASS_MAP = [self::BUILDING_ADDED => BuildingAdded::class];
202204
public static function describe(EventEngine $eventEngine) : void
203205
{
204-
$eventEngine->registerEvent(self::BUILDING_ADDED, new JsonSchemaArray(\json_decode(file_get_contents('/service/src/Domain/Api/_schema/BUILDING_ADDED.json'), true, 512, \JSON_THROW_ON_ERROR)));
206+
$eventEngine->registerEvent(self::BUILDING_ADDED, JsonSchemaArray::fromFile(self::SCHEMA_PATH . 'BUILDING_ADDED.json'));
205207
}
206208
}
207209
EOF;

0 commit comments

Comments
 (0)