]> BookStack Code Mirror - bookstack/blobdiff - app/Entities/Queries/BookshelfQueries.php
Layout: Converted tri-layout component to ts
[bookstack] / app / Entities / Queries / BookshelfQueries.php
index 7edff45b958a5e7a5ee23878a4f608143d62e9fa..19717fb7cd4daf0bd8b3fd1d530dc6ffe239b49c 100644 (file)
@@ -6,14 +6,35 @@ use BookStack\Entities\Models\Bookshelf;
 use BookStack\Exceptions\NotFoundException;
 use Illuminate\Database\Eloquent\Builder;
 
-class BookshelfQueries
+class BookshelfQueries implements ProvidesEntityQueries
 {
+    protected static array $listAttributes = [
+        'id', 'slug', 'name', 'description',
+        'created_at', 'updated_at', 'image_id', 'owned_by',
+    ];
+
     public function start(): Builder
     {
         return Bookshelf::query();
     }
 
-    public function findVisibleBySlug(string $slug): Bookshelf
+    public function findVisibleById(int $id): ?Bookshelf
+    {
+        return $this->start()->scopes('visible')->find($id);
+    }
+
+    public function findVisibleByIdOrFail(int $id): Bookshelf
+    {
+        $shelf = $this->findVisibleById($id);
+
+        if (is_null($shelf)) {
+            throw new NotFoundException(trans('errors.bookshelf_not_found'));
+        }
+
+        return $shelf;
+    }
+
+    public function findVisibleBySlugOrFail(string $slug): Bookshelf
     {
         /** @var ?Bookshelf $shelf */
         $shelf = $this->start()
@@ -30,7 +51,7 @@ class BookshelfQueries
 
     public function visibleForList(): Builder
     {
-        return $this->start()->scopes('visible');
+        return $this->start()->scopes('visible')->select(static::$listAttributes);
     }
 
     public function visibleForListWithCover(): Builder