2018-04-15 05:17:47 +08:00
|
|
|
<?php
|
|
|
|
|
2021-10-31 04:29:59 +08:00
|
|
|
namespace Database\Seeders;
|
|
|
|
|
2021-11-08 19:04:27 +08:00
|
|
|
use BookStack\Entities\Models\Book;
|
2020-11-22 08:17:45 +08:00
|
|
|
use BookStack\Entities\Models\Chapter;
|
|
|
|
use BookStack\Entities\Models\Page;
|
2023-05-18 00:56:55 +08:00
|
|
|
use BookStack\Permissions\JointPermissionBuilder;
|
2022-08-16 18:27:22 +08:00
|
|
|
use BookStack\Search\SearchIndex;
|
2023-05-18 00:56:55 +08:00
|
|
|
use BookStack\Users\Models\Role;
|
|
|
|
use BookStack\Users\Models\User;
|
2018-04-15 05:17:47 +08:00
|
|
|
use Illuminate\Database\Seeder;
|
2019-09-14 21:17:55 +08:00
|
|
|
use Illuminate\Support\Str;
|
2018-04-15 05:17:47 +08:00
|
|
|
|
|
|
|
class LargeContentSeeder extends Seeder
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Run the database seeds.
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function run()
|
|
|
|
{
|
|
|
|
// Create an editor user
|
2021-10-31 04:29:59 +08:00
|
|
|
$editorUser = User::factory()->create();
|
2019-09-14 21:17:55 +08:00
|
|
|
$editorRole = Role::getRole('editor');
|
2018-04-15 05:17:47 +08:00
|
|
|
$editorUser->attachRole($editorRole);
|
|
|
|
|
2021-11-08 19:04:27 +08:00
|
|
|
/** @var Book $largeBook */
|
|
|
|
$largeBook = Book::factory()->create(['name' => 'Large book' . Str::random(10), 'created_by' => $editorUser->id, 'updated_by' => $editorUser->id]);
|
2021-10-31 04:29:59 +08:00
|
|
|
$chapters = Chapter::factory()->count(50)->make(['created_by' => $editorUser->id, 'updated_by' => $editorUser->id]);
|
2018-04-15 05:17:47 +08:00
|
|
|
$largeBook->chapters()->saveMany($chapters);
|
2023-12-23 21:35:57 +08:00
|
|
|
|
|
|
|
$allPages = [];
|
|
|
|
|
|
|
|
foreach ($chapters as $chapter) {
|
|
|
|
$pages = Page::factory()->count(100)->make(['created_by' => $editorUser->id, 'updated_by' => $editorUser->id, 'chapter_id' => $chapter->id]);
|
|
|
|
$largeBook->pages()->saveMany($pages);
|
|
|
|
array_push($allPages, ...$pages->all());
|
|
|
|
}
|
|
|
|
|
|
|
|
$all = array_merge([$largeBook], $allPages, array_values($chapters->all()));
|
2021-11-08 19:04:27 +08:00
|
|
|
|
2022-07-13 03:15:41 +08:00
|
|
|
app()->make(JointPermissionBuilder::class)->rebuildForEntity($largeBook);
|
2021-11-08 19:29:25 +08:00
|
|
|
app()->make(SearchIndex::class)->indexEntities($all);
|
2018-04-15 05:17:47 +08:00
|
|
|
}
|
|
|
|
}
|