authorize('viewAny', [Worker::class, $server]); return Inertia::render('workers/index', [ 'workers' => WorkerResource::collection( $server->workers()->latest()->simplePaginate(config('web.pagination_size')) ), ]); } #[Get('/sites/{site}/workers', name: 'sites.workers')] public function site(Server $server, Site $site): Response { $this->authorize('viewAny', [Worker::class, $server, $site]); return Inertia::render('workers/index', [ 'workers' => WorkerResource::collection( $site->workers()->latest()->simplePaginate(config('web.pagination_size')) ), ]); } #[Post('/workers/{site?}', name: 'workers.store')] public function store(Request $request, Server $server, ?Site $site = null): RedirectResponse { $this->authorize('create', [Worker::class, $server, $site]); app(CreateWorker::class)->create($server, $request->all(), $site); return back() ->with('info', 'Worker is being created.'); } #[Put('/workers/{worker}/{site?}', name: 'workers.update')] public function update(Request $request, Server $server, Worker $worker, ?Site $site = null): RedirectResponse { $this->authorize('update', [$worker, $server, $site]); app(EditWorker::class)->edit($worker, $request->all()); return back() ->with('info', 'Worker is being updated.'); } #[Post('/workers/{worker}/start', name: 'workers.start')] public function start(Server $server, Worker $worker): RedirectResponse { $this->authorize('update', [$worker, $server]); app(ManageWorker::class)->start($worker); return back() ->with('info', 'Worker is being started.'); } #[Post('/workers/{worker}/stop', name: 'workers.stop')] public function stop(Server $server, Worker $worker): RedirectResponse { $this->authorize('update', [$worker, $server]); app(ManageWorker::class)->stop($worker); return back() ->with('info', 'Worker is being stopped.'); } #[Post('/workers/{worker}/restart', name: 'workers.restart')] public function restart(Server $server, Worker $worker): RedirectResponse { $this->authorize('update', [$worker, $server]); app(ManageWorker::class)->restart($worker); return back() ->with('info', 'Worker is being restarted.'); } #[Get('/workers/{worker}/logs', name: 'workers.logs')] public function logs(Server $server, Worker $worker): JsonResponse { $this->authorize('view', [$worker, $server]); $logs = app(GetWorkerLogs::class)->getLogs($worker); return response()->json([ 'logs' => $logs, ]); } #[Delete('/{worker}/{site?}', name: 'workers.destroy')] public function destroy(Server $server, Worker $worker, ?Site $site = null): RedirectResponse { $this->authorize('delete', [$worker, $server, $site]); app(DeleteWorker::class)->delete($worker); return back() ->with('info', 'Worker is being deleted.'); } }