Skip to content

Commit c95f4ca

Browse files
committed
Queries: Migrated revision repo queries to new class
1 parent 222c665 commit c95f4ca

File tree

3 files changed

+11
-46
lines changed

3 files changed

+11
-46
lines changed

app/Entities/Queries/PageRevisionQueries.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ public function findLatestVersionBySlugs(string $bookSlug, string $pageSlug): ?P
2727

2828
public function findLatestCurrentUserDraftsForPageId(int $pageId): ?PageRevision
2929
{
30-
return $this->latestCurrentUserDraftsForPageId($pageId)->first();
30+
/** @var ?PageRevision $revision */
31+
$revision = $this->latestCurrentUserDraftsForPageId($pageId)->first();
32+
33+
return $revision;
3134
}
3235

3336
public function latestCurrentUserDraftsForPageId(int $pageId): Builder

app/Entities/Queries/ProvidesEntityQueries.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace BookStack\Entities\Queries;
44

5-
use BookStack\App\Model;
5+
use BookStack\Entities\Models\Entity;
66
use Illuminate\Database\Eloquent\Builder;
77

88
/**

app/Entities/Repos/RevisionRepo.php

Lines changed: 6 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -4,47 +4,21 @@
44

55
use BookStack\Entities\Models\Page;
66
use BookStack\Entities\Models\PageRevision;
7-
use Illuminate\Database\Eloquent\Builder;
7+
use BookStack\Entities\Queries\PageRevisionQueries;
88

99
class RevisionRepo
1010
{
11-
/**
12-
* Get a revision by its stored book and page slug values.
13-
*/
14-
public function getBySlugs(string $bookSlug, string $pageSlug): ?PageRevision
15-
{
16-
/** @var ?PageRevision $revision */
17-
$revision = PageRevision::query()
18-
->whereHas('page', function (Builder $query) {
19-
$query->scopes('visible');
20-
})
21-
->where('slug', '=', $pageSlug)
22-
->where('type', '=', 'version')
23-
->where('book_slug', '=', $bookSlug)
24-
->orderBy('created_at', 'desc')
25-
->with('page')
26-
->first();
27-
28-
return $revision;
29-
}
30-
31-
/**
32-
* Get the latest draft revision, for the given page, belonging to the current user.
33-
*/
34-
public function getLatestDraftForCurrentUser(Page $page): ?PageRevision
35-
{
36-
/** @var ?PageRevision $revision */
37-
$revision = $this->queryForCurrentUserDraft($page->id)->first();
38-
39-
return $revision;
11+
public function __construct(
12+
protected PageRevisionQueries $queries,
13+
) {
4014
}
4115

4216
/**
4317
* Delete all drafts revisions, for the given page, belonging to the current user.
4418
*/
4519
public function deleteDraftsForCurrentUser(Page $page): void
4620
{
47-
$this->queryForCurrentUserDraft($page->id)->delete();
21+
$this->queries->latestCurrentUserDraftsForPageId($page->id)->delete();
4822
}
4923

5024
/**
@@ -53,7 +27,7 @@ public function deleteDraftsForCurrentUser(Page $page): void
5327
*/
5428
public function getNewDraftForCurrentUser(Page $page): PageRevision
5529
{
56-
$draft = $this->getLatestDraftForCurrentUser($page);
30+
$draft = $this->queries->findLatestCurrentUserDraftsForPageId($page->id);
5731

5832
if ($draft) {
5933
return $draft;
@@ -116,16 +90,4 @@ protected function deleteOldRevisions(Page $page)
11690
PageRevision::query()->whereIn('id', $revisionsToDelete->pluck('id'))->delete();
11791
}
11892
}
119-
120-
/**
121-
* Query update draft revisions for the current user.
122-
*/
123-
protected function queryForCurrentUserDraft(int $pageId): Builder
124-
{
125-
return PageRevision::query()
126-
->where('created_by', '=', user()->id)
127-
->where('type', 'update_draft')
128-
->where('page_id', '=', $pageId)
129-
->orderBy('created_at', 'desc');
130-
}
13193
}

0 commit comments

Comments
 (0)