*/ class TechnologyFactory extends Factory { protected $model = Technology::class; /** * @return array */ public function definition(): array { $name = fake()->unique()->randomElement([ 'Laravel', 'Astro', 'PHP', 'TypeScript', 'Rust', 'Go', 'PostgreSQL', 'Redis', 'Docker', 'Tailwind CSS', 'Vue', 'Svelte', 'Python', 'Kubernetes', 'Terraform', 'Elasticsearch', 'RabbitMQ', 'Vite', ]).' '.fake()->unique()->numberBetween(1, 9999); return [ 'name' => $name, 'slug' => Str::slug($name), 'description' => $this->eachLocale(fn () => fake()->sentence()), 'radar_note' => $this->eachLocale(fn () => fake()->sentence(10)), 'category' => fake()->randomElement(TechnologyCategory::cases()), 'radar_ring' => fake()->randomElement(RadarRing::cases()), 'color' => fake()->hexColor(), 'position' => fake()->numberBetween(0, 30), ]; } public function offRadar(): static { return $this->state(fn () => ['radar_ring' => null]); } public function ring(RadarRing $ring): static { return $this->state(fn () => ['radar_ring' => $ring]); } /** @return array */ protected function eachLocale(callable $value): array { return collect(array_keys(config('locales.supported'))) ->mapWithKeys(fn (string $l) => [$l => $value($l)]) ->all(); } }