use BookStack\Facades\Activity;
use BookStack\Sorting\SortRule;
use BookStack\Uploads\ImageRepo;
+use BookStack\Util\DatabaseTransaction;
use Exception;
use Illuminate\Http\UploadedFile;
*/
public function create(array $input): Book
{
- $book = new Book();
- $this->baseRepo->create($book, $input);
- $this->baseRepo->updateCoverImage($book, $input['image'] ?? null);
- $this->baseRepo->updateDefaultTemplate($book, intval($input['default_template_id'] ?? null));
- Activity::add(ActivityType::BOOK_CREATE, $book);
+ return (new DatabaseTransaction(function () use ($input) {
+ $book = new Book();
- $defaultBookSortSetting = intval(setting('sorting-book-default', '0'));
- if ($defaultBookSortSetting && SortRule::query()->find($defaultBookSortSetting)) {
- $book->sort_rule_id = $defaultBookSortSetting;
- $book->save();
- }
+ $this->baseRepo->create($book, $input);
+ $this->baseRepo->updateCoverImage($book, $input['image'] ?? null);
+ $this->baseRepo->updateDefaultTemplate($book, intval($input['default_template_id'] ?? null));
+ Activity::add(ActivityType::BOOK_CREATE, $book);
- return $book;
+ $defaultBookSortSetting = intval(setting('sorting-book-default', '0'));
+ if ($defaultBookSortSetting && SortRule::query()->find($defaultBookSortSetting)) {
+ $book->sort_rule_id = $defaultBookSortSetting;
+ $book->save();
+ }
+
+ return $book;
+ }))->run();
}
/**