44
55use BookStack \Entities \Models \Page ;
66use BookStack \Entities \Models \PageRevision ;
7- use Illuminate \ Database \ Eloquent \ Builder ;
7+ use BookStack \ Entities \ Queries \ PageRevisionQueries ;
88
99class 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