Skip to content

Commit 4d0d79a

Browse files
committed
Cache and use filesystem created by default with initial config
1 parent b872585 commit 4d0d79a

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

src/DependencyInjection/CompilerPass/FlysystemCompilerPass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public function process(ContainerBuilder $container): void
3939
$attributes['config'] ?? []
4040
]);
4141
$serviceName = sprintf('api_components.filesystem.%s', $attributes['alias']);
42-
$container->setDefinition($serviceName, $definition);
42+
$container->setDefinition($serviceName, $definition)->addTag(FilesystemProvider::FILESYSTEM_TAG, [ 'alias' => $attributes['alias'] ]);
4343
}
4444
}
4545
}

src/Flysystem/FilesystemProvider.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,23 @@
2424
class FilesystemProvider
2525
{
2626
public const FILESYSTEM_ADAPTER_TAG = 'silverback.api_components.filesystem_adapter';
27+
public const FILESYSTEM_TAG = 'silverback.api_components.filesystem_adapter';
28+
29+
private array $filesystems = [];
2730

2831
public function __construct(private readonly ServiceLocator $adapters)
2932
{}
3033

3134
/**
3235
* @throws RuntimeException
3336
*/
34-
public function getFilesystem(string $name, array $config = []): Filesystem
37+
private function createFilesystem(string $name, array $config = []): Filesystem
38+
{
39+
return $this->filesystems[$name] = new Filesystem($this->adapters->get($name), $config);
40+
}
41+
42+
public function getFilesystem(string $name, array $config = []): ?Filesystem
3543
{
36-
return new Filesystem($this->adapters->get($name), $config);
44+
return $this->filesystems[$name] ?? $this->createFilesystem($name,$config);
3745
}
3846
}

0 commit comments

Comments
 (0)