From c95f4ca40fecf0584eccb5f89d49b245d4ec7369 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 7 Feb 2024 15:09:16 +0000 Subject: [PATCH] Queries: Migrated revision repo queries to new class --- app/Entities/Queries/PageRevisionQueries.php | 5 +- .../Queries/ProvidesEntityQueries.php | 2 +- app/Entities/Repos/RevisionRepo.php | 50 +++---------------- 3 files changed, 11 insertions(+), 46 deletions(-) diff --git a/app/Entities/Queries/PageRevisionQueries.php b/app/Entities/Queries/PageRevisionQueries.php index 2dcd428f5..6e017a742 100644 --- a/app/Entities/Queries/PageRevisionQueries.php +++ b/app/Entities/Queries/PageRevisionQueries.php @@ -27,7 +27,10 @@ class PageRevisionQueries public function findLatestCurrentUserDraftsForPageId(int $pageId): ?PageRevision { - return $this->latestCurrentUserDraftsForPageId($pageId)->first(); + /** @var ?PageRevision $revision */ + $revision = $this->latestCurrentUserDraftsForPageId($pageId)->first(); + + return $revision; } public function latestCurrentUserDraftsForPageId(int $pageId): Builder diff --git a/app/Entities/Queries/ProvidesEntityQueries.php b/app/Entities/Queries/ProvidesEntityQueries.php index ea83d6cdd..103352244 100644 --- a/app/Entities/Queries/ProvidesEntityQueries.php +++ b/app/Entities/Queries/ProvidesEntityQueries.php @@ -2,7 +2,7 @@ namespace BookStack\Entities\Queries; -use BookStack\App\Model; +use BookStack\Entities\Models\Entity; use Illuminate\Database\Eloquent\Builder; /** diff --git a/app/Entities/Repos/RevisionRepo.php b/app/Entities/Repos/RevisionRepo.php index 064327ee9..daf55777c 100644 --- a/app/Entities/Repos/RevisionRepo.php +++ b/app/Entities/Repos/RevisionRepo.php @@ -4,39 +4,13 @@ namespace BookStack\Entities\Repos; use BookStack\Entities\Models\Page; use BookStack\Entities\Models\PageRevision; -use Illuminate\Database\Eloquent\Builder; +use BookStack\Entities\Queries\PageRevisionQueries; class RevisionRepo { - /** - * Get a revision by its stored book and page slug values. - */ - public function getBySlugs(string $bookSlug, string $pageSlug): ?PageRevision - { - /** @var ?PageRevision $revision */ - $revision = PageRevision::query() - ->whereHas('page', function (Builder $query) { - $query->scopes('visible'); - }) - ->where('slug', '=', $pageSlug) - ->where('type', '=', 'version') - ->where('book_slug', '=', $bookSlug) - ->orderBy('created_at', 'desc') - ->with('page') - ->first(); - - return $revision; - } - - /** - * Get the latest draft revision, for the given page, belonging to the current user. - */ - public function getLatestDraftForCurrentUser(Page $page): ?PageRevision - { - /** @var ?PageRevision $revision */ - $revision = $this->queryForCurrentUserDraft($page->id)->first(); - - return $revision; + public function __construct( + protected PageRevisionQueries $queries, + ) { } /** @@ -44,7 +18,7 @@ class RevisionRepo */ public function deleteDraftsForCurrentUser(Page $page): void { - $this->queryForCurrentUserDraft($page->id)->delete(); + $this->queries->latestCurrentUserDraftsForPageId($page->id)->delete(); } /** @@ -53,7 +27,7 @@ class RevisionRepo */ public function getNewDraftForCurrentUser(Page $page): PageRevision { - $draft = $this->getLatestDraftForCurrentUser($page); + $draft = $this->queries->findLatestCurrentUserDraftsForPageId($page->id); if ($draft) { return $draft; @@ -116,16 +90,4 @@ class RevisionRepo PageRevision::query()->whereIn('id', $revisionsToDelete->pluck('id'))->delete(); } } - - /** - * Query update draft revisions for the current user. - */ - protected function queryForCurrentUserDraft(int $pageId): Builder - { - return PageRevision::query() - ->where('created_by', '=', user()->id) - ->where('type', 'update_draft') - ->where('page_id', '=', $pageId) - ->orderBy('created_at', 'desc'); - } }