Skip to content

Commit 4051d2e

Browse files
committed
generate a SchemaCompiledEvent when Type files are generated
fixes #718
1 parent e0cfa21 commit 4051d2e

File tree

4 files changed

+22
-1
lines changed

4 files changed

+22
-1
lines changed

src/Event/SchemaCompiledEvent.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Overblog\GraphQLBundle\Event;
6+
7+
use Symfony\Contracts\EventDispatcher\Event;
8+
9+
final class SchemaCompiledEvent extends Event
10+
{
11+
}

src/Generator/TypeGenerator.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
use Composer\Autoload\ClassLoader;
88
use Overblog\GraphQLBundle\Config\Processor;
9+
use Overblog\GraphQLBundle\Event\SchemaCompiledEvent;
910
use Symfony\Component\Filesystem\Filesystem;
11+
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
1012
use function array_merge;
1113
use function file_exists;
1214
use function file_put_contents;
@@ -33,12 +35,14 @@ class TypeGenerator
3335
private ?string $baseCacheDir;
3436
private string $classNamespace;
3537
private TypeBuilder $typeBuilder;
38+
private EventDispatcherInterface $eventDispatcher;
3639

3740
public function __construct(
3841
string $classNamespace,
3942
?string $cacheDir,
4043
array $configs,
4144
TypeBuilder $typeBuilder,
45+
EventDispatcherInterface $eventDispatcher,
4246
bool $useClassMap = true,
4347
?string $baseCacheDir = null,
4448
?int $cacheDirMask = null
@@ -48,6 +52,7 @@ public function __construct(
4852
$this->useClassMap = $useClassMap;
4953
$this->baseCacheDir = $baseCacheDir;
5054
$this->typeBuilder = $typeBuilder;
55+
$this->eventDispatcher = $eventDispatcher;
5156
$this->classNamespace = $classNamespace;
5257

5358
if (null === $cacheDirMask) {
@@ -120,6 +125,8 @@ public function compile(int $mode): array
120125
$this->loadClasses(true);
121126
}
122127

128+
$this->eventDispatcher->dispatch(new SchemaCompiledEvent());
129+
123130
return $classes;
124131
}
125132

src/Resources/config/services.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ services:
6464
- "%overblog_graphql.cache_dir%"
6565
- "%overblog_graphql_types.config%"
6666
- '@Overblog\GraphQLBundle\Generator\TypeBuilder'
67+
- '@Symfony\Contracts\EventDispatcher\EventDispatcherInterface'
6768
- "%overblog_graphql.use_classloader_listener%"
6869
- "%kernel.cache_dir%"
6970
- "%overblog_graphql.cache_dir_permissions%"

tests/Generator/TypeGeneratorTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Generator;
88
use Overblog\GraphQLBundle\Generator\TypeBuilder;
99
use PHPUnit\Framework\TestCase;
10+
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
1011

1112
class TypeGeneratorTest extends TestCase
1213
{
@@ -20,9 +21,10 @@ class TypeGeneratorTest extends TestCase
2021
public function testCacheDirPermissions($expectedMask, $cacheDir, $cacheDirMask): void
2122
{
2223
$typeBuilder = $this->createMock(TypeBuilder::class);
24+
$eventDispatcher = $this->createMock(EventDispatcherInterface::class);
2325

2426
$mask = (new TypeGenerator(
25-
'App', $cacheDir, [], $typeBuilder, true, null, $cacheDirMask
27+
'App', $cacheDir, [], $typeBuilder, $eventDispatcher, true, null, $cacheDirMask
2628
))->getCacheDirMask();
2729

2830
$this->assertSame($expectedMask, $mask);

0 commit comments

Comments
 (0)