From b4b6fde778548ff9f684cbbd143112c53f1d323b Mon Sep 17 00:00:00 2001 From: Mike Colagrosso Date: Sun, 13 Oct 2024 20:42:51 -0600 Subject: [PATCH] Remove primary key EbookLocSubjectId Add a SortOrder column to keep the LocSubjects in the same order as given in content.opf. --- config/sql/se/EbookLocSubjects.sql | 3 +-- lib/Ebook.php | 9 +++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/sql/se/EbookLocSubjects.sql b/config/sql/se/EbookLocSubjects.sql index c44025cf..e54df3a1 100644 --- a/config/sql/se/EbookLocSubjects.sql +++ b/config/sql/se/EbookLocSubjects.sql @@ -1,7 +1,6 @@ CREATE TABLE `EbookLocSubjects` ( - `EbookLocSubjectId` int(10) unsigned NOT NULL AUTO_INCREMENT, `EbookId` int(10) unsigned NOT NULL, `LocSubjectId` int(10) unsigned NOT NULL, - PRIMARY KEY (`EbookLocSubjectId`), + `SortOrder` tinyint(3) unsigned NOT NULL, UNIQUE KEY `idxUnique` (`EbookId`,`LocSubjectId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/lib/Ebook.php b/lib/Ebook.php index 439790b8..2352fcd8 100644 --- a/lib/Ebook.php +++ b/lib/Ebook.php @@ -161,7 +161,7 @@ class Ebook{ from LocSubjects l inner join EbookLocSubjects el using (LocSubjectId) where EbookId = ? - order by el.EbookLocSubjectId + order by SortOrder asc ', [$this->EbookId], LocSubject::class); } @@ -1714,13 +1714,14 @@ class Ebook{ } private function AddLocSubjects(): void{ - foreach($this->LocSubjects as $locSubject){ + foreach($this->LocSubjects as $sortOrder => $locSubject){ try{ Db::Query(' - INSERT into EbookLocSubjects (EbookId, LocSubjectId) + INSERT into EbookLocSubjects (EbookId, LocSubjectId, SortOrder) values (?, + ?, ?) - ', [$this->EbookId, $locSubject->LocSubjectId]); + ', [$this->EbookId, $locSubject->LocSubjectId, $sortOrder]); } catch(Exceptions\DuplicateDatabaseKeyException){ // The Ebook already has the LocSubject, which is fine.