Skip to content

Commit

Permalink
Merge pull request #1 from stayallive/octane
Browse files Browse the repository at this point in the history
Listen to more Octane events
  • Loading branch information
stayallive authored Dec 27, 2023
2 parents 13b557d + e716582 commit 0159495
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 19 deletions.
7 changes: 6 additions & 1 deletion src/MemoizedClientRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
use Laravel\Passport\Client;
use Laravel\Passport\ClientRepository;

class MemoizedClientRepository extends ClientRepository
class MemoizedClientRepository extends ClientRepository implements MemoizedRepository
{
private array $cache = [];

Expand Down Expand Up @@ -51,4 +51,9 @@ public function delete(Client $client): void

parent::delete($client);
}

public function clearInternalCache(): void
{
$this->cache = [];
}
}
8 changes: 8 additions & 0 deletions src/MemoizedRepository.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

namespace Stayallive\Laravel\Passport\Memoized;

interface MemoizedRepository
{
public function clearInternalCache(): void;
}
7 changes: 6 additions & 1 deletion src/MemoizedTokenRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
use Laravel\Passport\Token;
use Laravel\Passport\TokenRepository;

class MemoizedTokenRepository extends TokenRepository
class MemoizedTokenRepository extends TokenRepository implements MemoizedRepository
{
private array $cache = [];

Expand Down Expand Up @@ -40,4 +40,9 @@ public function revokeAccessToken($id): bool

return parent::revokeAccessToken($id);
}

public function clearInternalCache(): void
{
$this->cache = [];
}
}
25 changes: 25 additions & 0 deletions src/OctaneOperationTerminatedListener.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace Stayallive\Laravel\Passport\Memoized;

use Laravel\Passport\TokenRepository;
use Laravel\Passport\ClientRepository;
use Laravel\Octane\Contracts\OperationTerminated;

class OctaneOperationTerminatedListener
{
public function handle(OperationTerminated $event): void
{
$repositories = [
$event->app()->make(TokenRepository::class),
$event->app()->make(ClientRepository::class),
];

foreach ($repositories as $repository) {
if ($repository instanceof MemoizedRepository) {
$repository->clearInternalCache();
}
}
}

}
16 changes: 0 additions & 16 deletions src/OctaneTaskTerminatedListener.php

This file was deleted.

8 changes: 7 additions & 1 deletion src/ServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,19 @@
use Laravel\Passport\TokenRepository;
use Laravel\Passport\ClientRepository;
use Laravel\Octane\Events\TaskTerminated;
use Laravel\Octane\Events\TickTerminated;
use Laravel\Octane\Events\RequestTerminated;
use Illuminate\Support\ServiceProvider as LaravelServiceProvider;

class ServiceProvider extends LaravelServiceProvider
{
public function boot(Dispatcher $events): void
{
$events->listen(TaskTerminated::class, OctaneTaskTerminatedListener::class);
$events->listen([
TickTerminated::class,
TaskTerminated::class,
RequestTerminated::class,
], OctaneOperationTerminatedListener::class);
}

public function register(): void
Expand Down

0 comments on commit 0159495

Please sign in to comment.