namespace BookStack\Entities\Repos;
use BookStack\Activity\ActivityType;
-use BookStack\Entities\Models\Book;
use BookStack\Entities\Models\Bookshelf;
+use BookStack\Entities\Queries\BookQueries;
use BookStack\Entities\Tools\TrashCan;
use BookStack\Facades\Activity;
+use BookStack\Util\DatabaseTransaction;
use Exception;
class BookshelfRepo
{
public function __construct(
protected BaseRepo $baseRepo,
+ protected BookQueries $bookQueries,
+ protected TrashCan $trashCan,
) {
}
*/
public function create(array $input, array $bookIds): Bookshelf
{
- $shelf = new Bookshelf();
- $this->baseRepo->create($shelf, $input);
- $this->baseRepo->updateCoverImage($shelf, $input['image'] ?? null);
- $this->updateBooks($shelf, $bookIds);
- Activity::add(ActivityType::BOOKSHELF_CREATE, $shelf);
-
- return $shelf;
+ return (new DatabaseTransaction(function () use ($input, $bookIds) {
+ $shelf = new Bookshelf();
+ $this->baseRepo->create($shelf, $input);
+ $this->baseRepo->updateCoverImage($shelf, $input['image'] ?? null);
+ $this->updateBooks($shelf, $bookIds);
+ Activity::add(ActivityType::BOOKSHELF_CREATE, $shelf);
+ return $shelf;
+ }))->run();
}
/**
return intval($id);
});
- $syncData = Book::visible()
+ $syncData = $this->bookQueries->visibleForList()
->whereIn('id', $bookIds)
->pluck('id')
->mapWithKeys(function ($bookId) use ($numericIDs) {
*/
public function destroy(Bookshelf $shelf)
{
- $trashCan = new TrashCan();
- $trashCan->softDestroyShelf($shelf);
+ $this->trashCan->softDestroyShelf($shelf);
Activity::add(ActivityType::BOOKSHELF_DELETE, $shelf);
- $trashCan->autoClearOld();
+ $this->trashCan->autoClearOld();
}
}