Register observers via #[ObservedBy] attribute instead of the service provider

Move PostObserver, AutomationRunObserver, and AutomationNodeRunObserver onto
their models with the #[ObservedBy] attribute (the Laravel-preferred way) and
drop AppServiceProvider::configureObservers() plus its now-unused imports.
This commit is contained in:
Paulo Castellano 2026-06-10 17:19:32 -03:00
parent 21b14f7893
commit 41edf3123d
4 changed files with 9 additions and 13 deletions

View file

@ -4,11 +4,14 @@
use App\Enums\Automation\Node\Type as NodeType;
use App\Enums\Automation\NodeRun\Status;
use App\Observers\AutomationNodeRunObserver;
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
#[ObservedBy([AutomationNodeRunObserver::class])]
class AutomationNodeRun extends Model
{
use HasFactory;

View file

@ -3,6 +3,8 @@
namespace App\Models;
use App\Enums\Automation\Run\Status;
use App\Observers\AutomationRunObserver;
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Database\Eloquent\Factories\HasFactory;
@ -10,6 +12,7 @@
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
#[ObservedBy([AutomationRunObserver::class])]
class AutomationRun extends Model
{
use HasFactory;

View file

@ -7,7 +7,9 @@
use App\DataTransferObjects\MediaItem;
use App\Enums\Media\Type;
use App\Enums\Post\Status as PostStatus;
use App\Observers\PostObserver;
use Database\Factories\PostFactory;
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Concerns\HasUuids;
@ -19,6 +21,7 @@
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
#[ObservedBy([PostObserver::class])]
class Post extends Model
{
/** @use HasFactory<PostFactory> */

View file

@ -8,8 +8,6 @@
use App\Models\AccessToken;
use App\Models\Account;
use App\Models\AiUsageLog;
use App\Models\AutomationNodeRun;
use App\Models\AutomationRun;
use App\Models\Invite;
use App\Models\Media;
use App\Models\Notification;
@ -26,9 +24,6 @@
use App\Models\WorkspaceInvite;
use App\Models\WorkspaceLabel;
use App\Models\WorkspaceSignature;
use App\Observers\AutomationNodeRunObserver;
use App\Observers\AutomationRunObserver;
use App\Observers\PostObserver;
use App\Services\PostHogService;
use App\Services\PostTemplate\Registry as PostTemplateRegistry;
use App\Socialite\InstagramProvider;
@ -89,7 +84,6 @@ public function boot(): void
$this->configureRateLimiting();
$this->configureSocialite();
$this->configureStripeWebhooks();
$this->configureObservers();
Cashier::useCustomerModel(Account::class);
Cashier::useSubscriptionModel(Subscription::class);
@ -102,13 +96,6 @@ public function boot(): void
$this->configurePassport();
}
protected function configureObservers(): void
{
Post::observe(PostObserver::class);
AutomationRun::observe(AutomationRunObserver::class);
AutomationNodeRun::observe(AutomationNodeRunObserver::class);
}
protected function configurePassport(): void
{
Passport::useTokenModel(AccessToken::class);