Skip to content

Commit

Permalink
fix: flush cache every time a job is processed (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
azuradara authored Jul 13, 2024
1 parent d477907 commit eb3a736
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 17 deletions.
5 changes: 5 additions & 0 deletions src/Drivers/ArrayDriver.php
Original file line number Diff line number Diff line change
Expand Up @@ -92,4 +92,9 @@ public function define(string $name, callable $resolver): void
{
$this->resolvers[$name] = $resolver;
}

public function cFlush(): void
{
$this->resolved = [];
}
}
5 changes: 5 additions & 0 deletions src/Drivers/Decorator.php
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,11 @@ public function set(string $name, $context, $value): void
$this->cPut($name, $context, $value);
}

public function cFlush(): void
{
$this->cache = collect();
}

/**
* @param string $name
* @param array $arguments
Expand Down
41 changes: 24 additions & 17 deletions src/Foggle.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
*/
final class Foggle
{
private Container $container;
protected array $stores = [];
private Container $container;

public function __construct(Container $container)
{
Expand All @@ -41,13 +41,6 @@ public function feature(string $name)
return $feature->resolve();
}

public function driver(string $name = null): Decorator
{
$name = $name ?: $this->getDefaultDriver();

return $this->stores[$name] = $this->stores[$name] ?? $this->resolve($name);
}

protected function resolve(string $name): Decorator
{
$config = $this->getDriverConfig($name);
Expand All @@ -61,11 +54,7 @@ protected function resolve(string $name): Decorator

if ($name === 'redis') {
$driver = new RedisDriver(
$name,
[],
$this->container['config'],
$this->container['redis'],
$this->container['events']
$name, [], $this->container['config'], $this->container['redis'], $this->container['events']
);
}

Expand All @@ -81,14 +70,21 @@ protected function getDriverConfig(string $name): ?array
return $this->container['config']["foggle.stores.$name"];
}

public function getDefaultDriver(): string
public function __call($name, $arguments)
{
return $this->container['config']->get('foggle.default') ?? 'array';
return $this->driver()->$name(...$arguments);
}

public function __call($name, $arguments)
public function driver(string $name = null): Decorator
{
return $this->driver()->$name(...$arguments);
$name = $name ?: $this->getDefaultDriver();

return $this->stores[$name] = $this->stores[$name] ?? $this->resolve($name);
}

public function getDefaultDriver(): string
{
return $this->container['config']->get('foggle.default') ?? 'array';
}

public function serialize($context): string
Expand All @@ -108,4 +104,15 @@ public function serialize($context): string
// Foggables normally get parsed before they reach this part
throw new RuntimeException('Unable to serialize context, please implement the Foggable contract.');
}

public function cFlush(): void
{
foreach ($this->stores as $driver) {
$driver->cFlush();
}

if (isset($this->stores['array'])) {
$this->stores['array']->getDriver()->cFlush();
}
}
}
5 changes: 5 additions & 0 deletions src/FoggleServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ public function boot()

$dispatcher = make(Dispatcher::class);

$dispatcher->listen(
[\Illuminate\Queue\Events\JobProcessed::class],
fn() => $this->app[Foggle::class]->cFlush(),
);

$dispatcher->listen(
[\Illuminate\Foundation\Events\PublishingStubs::class],
fn($e) => $e->add(__DIR__ . '/../stubs/feature.stub', 'feature.stub')
Expand Down

0 comments on commit eb3a736

Please sign in to comment.