From 841e02ef0fa9a71fe6169757aecac0011b9d2238 Mon Sep 17 00:00:00 2001 From: fabjola_memushaj Date: Wed, 10 Jan 2024 14:25:14 +0100 Subject: [PATCH] Add command to generate multiple photos --- app/Console/Commands/GenerateRandomPhotos.php | 73 +++++++++++++++++++ .../UserResource/Pages/CreateUser.php | 9 +++ database/seeders/UserSeeder.php | 16 ++-- 3 files changed, 90 insertions(+), 8 deletions(-) create mode 100644 app/Console/Commands/GenerateRandomPhotos.php diff --git a/app/Console/Commands/GenerateRandomPhotos.php b/app/Console/Commands/GenerateRandomPhotos.php new file mode 100644 index 00000000..67abd2ab --- /dev/null +++ b/app/Console/Commands/GenerateRandomPhotos.php @@ -0,0 +1,73 @@ +where('email', 'trashkiller@litterhero.com') + ->first(); + + $bar = progress('Generating 1M photos with tags...', 1_000_000); + + $bar->start(); + + $now = now()->toDateTimeString(); + + for ($i = 0; $i < 200; $i++) { + $photos = []; + $items = []; + $tags = []; + + for ($j = 0; $j < 5000; $j++) { + $photos[] = [ + 'user_id' => $user->id, + 'path' => 'photos/default.jpg', + 'created_at' => $now, + 'updated_at' => $now, + ]; + } + + DB::table('photos')->insert($photos); + + for ($j = 0; $j < 5000; $j++) { + $items[] = [ + 'photo_id' => $i * 5000 + $j + 2, + 'item_id' => random_int(1, 300), + 'picked_up' => 0, + 'recycled' => 0, + 'quantity' => 1, + 'created_at' => $now, + 'updated_at' => $now, + ]; + } + + DB::table('photo_items')->insert($items); + + for ($k = 0; $k < 5000; $k++) { + $tags[] = [ + 'photo_item_id' => $i * 5000 + $k + 1, + 'tag_id' => random_int(1, 1500), + 'created_at' => $now, + 'updated_at' => $now, + ]; + } + + DB::table('photo_item_tag')->insert($tags); + + $bar->advance(5000); + } + + $bar->finish(); + } +} diff --git a/app/Filament/Resources/UserResource/Pages/CreateUser.php b/app/Filament/Resources/UserResource/Pages/CreateUser.php index 78a38949..f3c8928e 100644 --- a/app/Filament/Resources/UserResource/Pages/CreateUser.php +++ b/app/Filament/Resources/UserResource/Pages/CreateUser.php @@ -4,8 +4,17 @@ use App\Filament\Resources\UserResource; use Filament\Resources\Pages\CreateRecord; +use Illuminate\Support\Facades\Hash; class CreateUser extends CreateRecord { protected static string $resource = UserResource::class; + + protected function mutateFormDataBeforeCreate(array $data): array + { + $data['password'] = Hash::make('password'); + $data['email_verified_at'] = now(); + + return $data; + } } diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php index ea5d116d..9c302139 100644 --- a/database/seeders/UserSeeder.php +++ b/database/seeders/UserSeeder.php @@ -27,6 +27,14 @@ public function run(): void 'password' => Hash::make('password'), ]); + $team = Team::factory()->create([ + 'name' => 'Team A', + 'user_id' => $userA->id, + 'personal_team' => true, + ]); + + $userA->teams()->attach($team); + tap(User::factory()->create([ 'name' => 'Waste Wizard', 'email' => 'wastewizard@litterhero.com', @@ -51,13 +59,5 @@ public function run(): void 'email' => 'trashkiller@litterhero.com', 'password' => Hash::make('password'), ]); - - $team = Team::factory()->create([ - 'name' => 'Team A', - 'user_id' => $userA->id, - 'personal_team' => true, - ]); - - $userA->teams()->attach($team); } }