userId = $userId; $this->prompt = $prompt; $this->jobId = $jobId ?: Str::uuid()->toString(); $this->queue = 'ai'; } public function handle(): void { try { Cache::put("meme_job_status_{$this->jobId}", 'processing', 300); $meme = MemeGenerator::generateMemeByKeyword($this->prompt); $meme_media = MemeGenerator::getSuitableMemeMedia($meme, 2); $result = [ 'generate' => [ 'info' => $meme, 'caption' => $meme->caption, 'meme' => $meme_media, 'background' => $meme->background_media, ], ]; Cache::put("meme_job_result_{$this->jobId}", $result, 300); Cache::put("meme_job_status_{$this->jobId}", 'completed', 300); } catch (\Exception $e) { Cache::put("meme_job_status_{$this->jobId}", 'failed', 300); Cache::put("meme_job_error_{$this->jobId}", $e->getMessage(), 300); throw $e; } } public function getJobId(): string { return $this->jobId; } }