*/ class LikeController extends BaseController { final public const ATTRIBUTE_PLAYLIST = 'playlist'; final public const ATTRIBUTE_VIDEO = 'video'; /** * @param null $root * @param array $args * * @throws ClientValidationException */ public function store($root, array $args): Model { $validated = $this->validated($args, LikeMutation::class); $playlist = Arr::get($validated, self::ATTRIBUTE_PLAYLIST); $video = Arr::get($validated, self::ATTRIBUTE_VIDEO); if ($playlist instanceof Playlist) { $playlist->like(); return $playlist; } if ($video instanceof Video) { $video->like(); return $video; } throw new ClientValidationException('One resource is required to like.'); } /** * @param null $root * @param array $args * * @throws ClientValidationException */ public function destroy($root, array $args): Model { $validated = $this->validated($args, UnlikeMutation::class); $playlist = Arr::get($validated, self::ATTRIBUTE_PLAYLIST); $video = Arr::get($validated, self::ATTRIBUTE_VIDEO); if ($playlist instanceof Playlist) { $playlist->unlike(); return $playlist; } if ($video instanceof Video) { $video->unlike(); return $video; } throw new ClientValidationException('One resource is required to unlike.'); } }