From 4e9ef8b5a7f9450a5ca278baab3679a600433979 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Thu, 19 Feb 2026 14:13:23 +0700 Subject: [PATCH] feat: Implement ChickenObserver to clear active chickens cache on model changes and register it with the Chicken model. --- app/Models/Chicken.php | 3 ++ app/Observers/ChickenObserver.php | 57 +++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 app/Observers/ChickenObserver.php diff --git a/app/Models/Chicken.php b/app/Models/Chicken.php index e658bfc..a682b0d 100644 --- a/app/Models/Chicken.php +++ b/app/Models/Chicken.php @@ -3,10 +3,13 @@ namespace App\Models; use App\Enums\ChickenStatus; +use App\Observers\ChickenObserver; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +#[ObservedBy([ChickenObserver::class])] class Chicken extends Model { use HasFactory, SoftDeletes; diff --git a/app/Observers/ChickenObserver.php b/app/Observers/ChickenObserver.php new file mode 100644 index 0000000..5f69c86 --- /dev/null +++ b/app/Observers/ChickenObserver.php @@ -0,0 +1,57 @@ +forget('active_chickens_for_egg_collection_form'); + } + + /** + * Handle the Chicken "created" event. + */ + public function created(Chicken $chicken): void + { + $this->clearChickenCache(); + } + + /** + * Handle the Chicken "updated" event. + */ + public function updated(Chicken $chicken): void + { + $this->clearChickenCache(); + } + + /** + * Handle the Chicken "deleted" event. + */ + public function deleted(Chicken $chicken): void + { + $this->clearChickenCache(); + } + + /** + * Handle the Chicken "restored" event. + */ + public function restored(Chicken $chicken): void + { + $this->clearChickenCache(); + } + + /** + * Handle the Chicken "force deleted" event. + */ + public function forceDeleted(Chicken $chicken): void + { + $this->clearChickenCache(); + } +}