. */ declare(strict_types=1); namespace App\Services\Shared\Conversion; use Illuminate\Support\Facades\Log; /** * Trait GeneratesIdentifier */ trait GeneratesIdentifier { protected string $identifier; private string $diskName = 'conversion-routines'; public function getIdentifier(): string { return $this->identifier; } protected function generateIdentifier(): void { Log::debug('Going to generate conversion routine identifier.'); $disk = \Storage::disk($this->diskName); $count = 0; do { $generatedId = sprintf('conversion-%s', \Str::random(12)); ++$count; Log::debug(sprintf('Attempt #%d results in "%s"', $count, $generatedId)); } while ($count < 30 && $disk->exists($generatedId)); $this->identifier = $generatedId; Log::info(sprintf('Job identifier is "%s"', $generatedId)); } }