]> BookStack Code Mirror - bookstack/blob - app/Entities/Queries/PageQueries.php
Queries: Extracted chapter repo queries to class
[bookstack] / app / Entities / Queries / PageQueries.php
1 <?php
2
3 namespace BookStack\Entities\Queries;
4
5 use BookStack\Entities\Models\Page;
6 use Illuminate\Database\Eloquent\Builder;
7
8 class PageQueries implements ProvidesEntityQueries
9 {
10     public function start(): Builder
11     {
12         return Page::query();
13     }
14
15     public function findVisibleById(int $id): ?Page
16     {
17         return $this->start()->scopes('visible')->find($id);
18     }
19
20     public function visibleForList(): Builder
21     {
22         return $this->start()
23             ->select(array_merge(Page::$listAttributes, ['book_slug' => function ($builder) {
24                 $builder->select('slug')
25                     ->from('books')
26                     ->whereColumn('books.id', '=', 'pages.book_id');
27             }]));
28     }
29
30     public function currentUserDraftsForList(): Builder
31     {
32         return $this->visibleForList()
33             ->where('draft', '=', true)
34             ->where('created_by', '=', user()->id);
35     }
36 }