34 lines
1.1 KiB
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();
|
|
}
|
|
}
|