*/ class LikeController extends BaseController { final public const string ATTRIBUTE_ENTRY = 'entry'; final public const string ATTRIBUTE_PLAYLIST = 'playlist'; /** * @param array $args * * @throws ClientValidationException */ public function store($root, array $args): Model&Likeable { $validated = $this->validated($args, LikeMutation::class); foreach ($validated as $likeable) { if ($likeable instanceof Model && $likeable instanceof Likeable) { $likeable->like(); return $likeable; } } throw new ClientValidationException('One resource is required to like.'); } /** * @param array $args * * @throws ClientValidationException */ public function destroy($root, array $args): Model&Likeable { $validated = $this->validated($args, UnlikeMutation::class); foreach ($validated as $likeable) { if ($likeable instanceof Model && $likeable instanceof Likeable) { $likeable->unlike(); return $likeable; } } throw new ClientValidationException('One resource is required to unlike.'); } }