feat: Implement ChickenObserver to clear active chickens cache on model changes and register it with the Chicken model.

This commit is contained in:
Yoga Pangestu 2026-02-19 14:13:23 +07:00
parent 11a1017a65
commit 4e9ef8b5a7
2 changed files with 60 additions and 0 deletions

View File

@ -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;

View File

@ -0,0 +1,57 @@
<?php
namespace App\Observers;
use App\Models\Chicken;
use Illuminate\Support\Facades\Cache;
class ChickenObserver
{
/**
* Handle events after any change that should invalidate chicken cache.
*/
protected function clearChickenCache(): void
{
Cache::store('redis')->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();
}
}