From b299da9311926baeffaf958ac36deaf0d111c1c1 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 1 Feb 2021 00:47:54 -0700 Subject: [PATCH] Update AccountService, cache object and observe changes --- app/Observers/AvatarObserver.php | 4 +- app/Observers/ProfileObserver.php | 64 ++++++++++++++++++++++++++++ app/Providers/AppServiceProvider.php | 3 ++ app/Services/AccountService.php | 29 ++++++++----- 4 files changed, 89 insertions(+), 11 deletions(-) create mode 100644 app/Observers/ProfileObserver.php diff --git a/app/Observers/AvatarObserver.php b/app/Observers/AvatarObserver.php index 3d62845b4..31ac45ebe 100644 --- a/app/Observers/AvatarObserver.php +++ b/app/Observers/AvatarObserver.php @@ -5,6 +5,7 @@ namespace App\Observers; use App\Avatar; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; +use App\Services\AccountService; class AvatarObserver { @@ -27,7 +28,7 @@ class AvatarObserver */ public function updated(Avatar $avatar) { - // + AccountService::del($avatar->profile_id); } /** @@ -64,6 +65,7 @@ class AvatarObserver $disk->delete($avatar->media_path); } } + AccountService::del($avatar->profile_id); } /** diff --git a/app/Observers/ProfileObserver.php b/app/Observers/ProfileObserver.php new file mode 100644 index 000000000..8cd5caf96 --- /dev/null +++ b/app/Observers/ProfileObserver.php @@ -0,0 +1,64 @@ +id); + } + + /** + * Handle the Profile "deleted" event. + * + * @param \App\Profile $profile + * @return void + */ + public function deleted(Profile $profile) + { + AccountService::del($profile->id); + } + + /** + * Handle the Profile "restored" event. + * + * @param \App\Profile $profile + * @return void + */ + public function restored(Profile $profile) + { + // + } + + /** + * Handle the Profile "force deleted" event. + * + * @param \App\Profile $profile + * @return void + */ + public function forceDeleted(Profile $profile) + { + // + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index df72e6448..7364745a8 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -6,6 +6,7 @@ use App\Observers\{ AvatarObserver, NotificationObserver, ModLogObserver, + ProfileObserver, StatusHashtagObserver, UserObserver, UserFilterObserver, @@ -14,6 +15,7 @@ use App\{ Avatar, Notification, ModLog, + Profile, StatusHashtag, User, UserFilter @@ -41,6 +43,7 @@ class AppServiceProvider extends ServiceProvider Avatar::observe(AvatarObserver::class); Notification::observe(NotificationObserver::class); ModLog::observe(ModLogObserver::class); + Profile::observe(ProfileObserver::class); StatusHashtag::observe(StatusHashtagObserver::class); User::observe(UserObserver::class); UserFilter::observe(UserFilterObserver::class); diff --git a/app/Services/AccountService.php b/app/Services/AccountService.php index 2ef8a6215..38e29169d 100644 --- a/app/Services/AccountService.php +++ b/app/Services/AccountService.php @@ -14,16 +14,25 @@ class AccountService { public static function get($id) { - // $key = self::CACHE_KEY . ':' . $id; - // $ttl = now()->addSeconds(10); - // return Cache::remember($key, $ttl, function() use($id) { - // }); - - $fractal = new Fractal\Manager(); - $fractal->setSerializer(new ArraySerializer()); - $profile = Profile::whereNull('status')->findOrFail($id); - $resource = new Fractal\Resource\Item($profile, new AccountTransformer()); - return $fractal->createData($resource)->toArray(); + if($id > PHP_INT_MAX || $id < 1) { + return []; + } + + $key = self::CACHE_KEY . $id; + $ttl = now()->addMinutes(15); + + return Cache::remember($key, $ttl, function() use($id) { + $fractal = new Fractal\Manager(); + $fractal->setSerializer(new ArraySerializer()); + $profile = Profile::whereNull('status')->findOrFail($id); + $resource = new Fractal\Resource\Item($profile, new AccountTransformer()); + return $fractal->createData($resource)->toArray(); + }); + } + + public static function del($id) + { + return Cache::forget(self::CACHE_KEY . $id); } } \ No newline at end of file