nimuli/app/Domains/Link/Actions/UpdateLink.php

34 lines
1.1 KiB
PHP

<?php
namespace App\Domains\Link\Actions;
use App\Domains\Link\Models\Link;
use App\Domains\Link\Services\LinkCacheService;
use App\Models\User;
class UpdateLink
{
public function __construct(private LinkCacheService $cache) {}
public function handle(Link $link, User $updater, array $data): Link
{
$link->update([
'target_url' => $data['target_url'] ?? $link->target_url,
'title' => $data['title'] ?? $link->title,
'description' => $data['description'] ?? $link->description,
'status' => $data['status'] ?? $link->status,
'expires_at' => $data['expires_at'] ?? $link->expires_at,
'click_limit' => $data['click_limit'] ?? $link->click_limit,
'rules' => $data['rules'] ?? $link->rules,
'pixel_config' => $data['pixel_config'] ?? $link->pixel_config,
'tags' => $data['tags'] ?? $link->tags,
'updated_by' => $updater->id,
]);
$this->cache->forget($link->slug, $link->domain_id);
$this->cache->warmFromLink($link->fresh());
return $link->fresh();
}
}