add some basic logging to database seeding

This commit is contained in:
IsWaffle 2024-08-26 12:39:19 -04:00
parent da706636a8
commit 0e010252f9

View File

@ -10,6 +10,8 @@ use App\Models\SptVersion;
use App\Models\User;
use App\Models\UserRole;
use Illuminate\Database\Seeder;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Output\ConsoleOutput;
class DatabaseSeeder extends Seeder
{
@ -29,6 +31,16 @@ class DatabaseSeeder extends Seeder
User::factory()->for($administrator, 'role')->create([
'email' => 'test@example.com',
]);
$this->command->outputComponents()->info('test account created: test@example.com');
$progress = $this->command->getOutput()->createProgressBar(5);
$progress->setFormat("%message%\n %current%/%max% [%bar%] %percent:3s%%");
$progress->setMessage("starting ...");
$progress->start();
$progress->setMessage('adding users ...');
User::factory(4)->for($administrator, 'role')->create();
// Add 10 moderators.
@ -37,19 +49,27 @@ class DatabaseSeeder extends Seeder
// Add 100 users.
$users = User::factory(100)->create();
$progress->advance();
// Add 300 mods, assigning them to the users we just created.
$progress->setMessage('adding mods ...');
$allUsers = $users->merge([$administrator, $moderator]);
$mods = Mod::factory(300)->recycle([$licenses])->create();
foreach ($mods as $mod) {
$userIds = $allUsers->random(rand(1, 3))->pluck('id')->toArray();
$mod->users()->attach($userIds);
}
$progress->advance();
// Add 3000 mod versions, assigning them to the mods we just created.
$progress->setMessage('adding mod versions ...');
$modVersions = ModVersion::factory(3000)->recycle([$mods, $spt_versions])->create();
$progress->advance();
// Add ModDependencies to a subset of ModVersions.
$progress->setMessage('adding mod dependencies ...');
foreach ($modVersions as $modVersion) {
$hasDependencies = rand(0, 100) < 30; // 30% chance to have dependencies
if ($hasDependencies) {
@ -59,5 +79,9 @@ class DatabaseSeeder extends Seeder
}
}
}
$progress->advance();
$progress->finish();
$this->command->info('');
$this->command->outputComponents()->success('Database seeded');
}
}