<?php

namespace App\Modules\DefinedService\DefinedService\Application\Update;

use App\Modules\DefinedService\DefinedService\Domain\IdDefinedService;
use App\Modules\DefinedService\DefinedService\Domain\DefinedServiceName;
use App\Modules\DefinedService\DefinedService\Domain\DefinedServiceStatus;
use App\Modules\DefinedService\DefinedService\Domain\DefinedServiceVersion;
use App\Modules\Shared\Domain\Bus\Query\QueryHandler;

final class UpdateDefinedServiceQueryHandler implements QueryHandler
{
    public function __construct(private DefinedServiceUpdater $updater) {}

    public function __invoke(UpdateDefinedServiceQuery $query): UpdateDefinedServiceResponse
    {
        $this->updater->__invoke(
            new IdDefinedService($query->id()),
            new DefinedServiceName($query->name()),
            new DefinedServiceVersion($query->version()),
            new DefinedServiceStatus($query->status()),
            $query->idAdmin()
        );
        return new UpdateDefinedServiceResponse();
    }
}
