mirror of
https://github.com/sp-tarkov/forge.git
synced 2025-02-12 12:10:41 -05:00
add full progress to seeder
This commit is contained in:
parent
5d5d94eaee
commit
681ef3ac91
@ -10,8 +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;
|
||||
|
||||
use function Laravel\Prompts\progress;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
@ -20,6 +20,11 @@ class DatabaseSeeder extends Seeder
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
// how many of each "thing" to make during seeding
|
||||
$userCount = 100;
|
||||
$modCount = 300;
|
||||
$modVersionCount = 500;
|
||||
|
||||
// Create a few SPT versions.
|
||||
$spt_versions = SptVersion::factory(30)->create();
|
||||
|
||||
@ -34,13 +39,6 @@ class DatabaseSeeder extends Seeder
|
||||
|
||||
$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.
|
||||
@ -48,40 +46,61 @@ class DatabaseSeeder extends Seeder
|
||||
User::factory(5)->for($moderator, 'role')->create();
|
||||
|
||||
// Add 100 users.
|
||||
$users = User::factory(100)->create();
|
||||
$progress->advance();
|
||||
$users = progress(
|
||||
label: 'adding users...',
|
||||
steps: $userCount,
|
||||
callback: fn () => User::factory()->create()
|
||||
);
|
||||
|
||||
// dd($users);
|
||||
|
||||
$users = collect($users);
|
||||
|
||||
// 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();
|
||||
|
||||
$mods = progress(
|
||||
label: 'adding mods...',
|
||||
steps: $modCount,
|
||||
callback: fn () => Mod::factory()->recycle([$licenses])->create()
|
||||
);
|
||||
|
||||
$mods = collect($mods);
|
||||
|
||||
progress(
|
||||
label: 'attaching mod users ...',
|
||||
steps: $mods,
|
||||
callback: function ($mod) use ($allUsers) {
|
||||
$userIds = $allUsers->random(rand(1, 3))->pluck('id')->toArray();
|
||||
$mod->users()->attach($userIds);
|
||||
}
|
||||
);
|
||||
|
||||
// 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();
|
||||
$modVersions = progress(
|
||||
label: 'adding mods versions ...',
|
||||
steps: $modVersionCount,
|
||||
callback: fn () => ModVersion::factory()->recycle([$mods, $spt_versions])->create()
|
||||
);
|
||||
|
||||
$modVersions = collect($modVersions);
|
||||
|
||||
// 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) {
|
||||
$dependencyMods = $mods->random(rand(1, 3)); // 1 to 3 dependencies
|
||||
foreach ($dependencyMods as $dependencyMod) {
|
||||
ModDependency::factory()->recycle([$modVersion, $dependencyMod])->create();
|
||||
|
||||
progress(
|
||||
label: 'adding mods dependencies ...',
|
||||
steps: $modVersions,
|
||||
callback: function ($modVersion) use ($mods) {
|
||||
$hasDependencies = rand(0, 100) < 30; // 30% chance to have dependencies
|
||||
if ($hasDependencies) {
|
||||
$dependencyMods = $mods->random(rand(1, 3)); // 1 to 3 dependencies
|
||||
foreach ($dependencyMods as $dependencyMod) {
|
||||
ModDependency::factory()->recycle([$modVersion, $dependencyMod])->create();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$progress->advance();
|
||||
$progress->finish();
|
||||
$this->command->info('');
|
||||
);
|
||||
|
||||
$this->command->outputComponents()->success('Database seeded');
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user