Remove primary key CollectionEbookId

Add a SortOrder to preserve the order of the collections listed in content.opf for ebook.php, e.g., for To the Lighthouse:

№ 15 in the Modern Library’s 100 Best Novels set.
Part of the Encyclopædia Britannica’s Great Books of the Western World set.
№ 2 in the BBC’s 100 Greatest British Novels (2015) set.
This commit is contained in:
Mike Colagrosso 2024-10-13 20:30:07 -06:00 committed by Alex Cabal
parent 4a7483411a
commit cada95383f
3 changed files with 9 additions and 9 deletions

View file

@ -177,7 +177,7 @@ class Ebook{
SELECT *
from CollectionEbooks
where EbookId = ?
order by CollectionEbookId
order by SortOrder asc
', [$this->EbookId], CollectionMembership::class);
}
@ -1737,19 +1737,20 @@ class Ebook{
}
private function AddCollectionMemberships(): void{
foreach($this->CollectionMemberships as $collectionMembership){
foreach($this->CollectionMemberships as $sortOrder => $collectionMembership){
$collectionMembership->EbookId = $this->EbookId;
$collectionMembership->CollectionId = $collectionMembership->Collection->CollectionId;
$collectionMembership->SortOrder = $sortOrder;
try{
Db::Query('
INSERT into CollectionEbooks (EbookId, CollectionId, SequenceNumber)
INSERT into CollectionEbooks (EbookId, CollectionId, SequenceNumber, SortOrder)
values (?,
?,
?,
?)
', [$collectionMembership->EbookId, $collectionMembership->CollectionId, $collectionMembership->SequenceNumber]);
$collectionMembership->CollectionEbookId = Db::GetLastInsertedId();
', [$collectionMembership->EbookId, $collectionMembership->CollectionId, $collectionMembership->SequenceNumber,
$collectionMembership->SortOrder]);
}
catch(Exceptions\DuplicateDatabaseKeyException){
// The Ebook is already a member of this Collection.