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

34 lines
914 B
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) {}
/** @param array<string, mixed> $data */
public function handle(Link $link, User $updater, array $data): Link
{
$fillable = ['target_url', 'title', 'description', 'status', 'expires_at', 'click_limit', 'rules', 'pixel_config', 'tags'];
$updates = ['updated_by' => $updater->id];
foreach ($fillable as $field) {
if (array_key_exists($field, $data)) {
$updates[$field] = $data[$field];
}
}
$link->update($updates);
$this->cache->forget($link->slug, $link->domain_id);
$fresh = $link->fresh();
$this->cache->warmFromLink($fresh);
return $fresh;
}
}