<?php

namespace App\Actions\SshKey;

use App\Models\SshKey;
use App\Models\User;
use App\ValidationRules\SshKeyRule;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;

class CreateSshKey
{
    /**
     * @throws ValidationException
     */
    public function create(User $user, array $input): SshKey
    {
        $this->validate($input);

        $key = new SshKey([
            'user_id' => $user->id,
            'name' => $input['name'],
            'public_key' => $input['public_key'],
        ]);
        $key->save();

        return $key;
    }

    /**
     * @throws ValidationException
     */
    private function validate(array $input): void
    {
        Validator::make($input, [
            'name' => 'required',
            'public_key' => [
                'required',
                new SshKeyRule,
            ],
        ])->validate();
    }
}