<?php namespace App\Models; use App\Jobs\Script\ExecuteOn; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; /** * @property int $user_id * @property string $name * @property string $content * @property User $creator */ class Script extends AbstractModel { use HasFactory; protected $fillable = [ 'user_id', 'name', 'content', ]; protected $casts = [ 'user_id' => 'integer', ]; public function creator(): BelongsTo { return $this->belongsTo(User::class); } public function executions(): HasMany { return $this->hasMany(ScriptExecution::class, 'script_id'); } public function executeOn(Server $server, string $user): void { dispatch(new ExecuteOn($this, $server, $user))->onConnection('ssh'); } }