Update library collections api endpoint to use libraryItems from db

This commit is contained in:
advplyr 2023-08-11 17:49:06 -05:00
parent aac2879652
commit 38029d1202
8 changed files with 209 additions and 31 deletions

View file

@ -365,7 +365,7 @@ module.exports = {
* @param {[oldUser]} user
* @param {number} limit
* @param {number} offset
* @returns {object} { libraryItems:LibraryItem[], count:number }
* @returns {Promise<object>} { libraryItems:LibraryItem[], count:number }
*/
async getLibraryItemsForAuthor(author, user, limit, offset) {
const { libraryItems, count } = await libraryItemsBookFilters.getFilteredLibraryItems(author.libraryId, user, 'authors', author.id, 'addedAt', true, false, [], limit, offset)
@ -373,5 +373,14 @@ module.exports = {
count,
libraryItems
}
},
/**
* Get book library items in a collection
* @param {oldCollection} collection
* @returns {Promise<LibraryItem[]>}
*/
getLibraryItemsForCollection(collection) {
return libraryItemsBookFilters.getLibraryItemsForCollection(collection)
}
}

View file

@ -548,7 +548,7 @@ module.exports = {
replacements,
benchmark: true,
logging: (sql, timeMs) => {
console.log(`[Query] Elapsed ${timeMs}ms.`)
console.log(`[Query] Elapsed ${timeMs}ms`)
},
include: [
{
@ -870,5 +870,48 @@ module.exports = {
libraryItems,
count
}
},
/**
* Get book library items in a collection
* @param {oldCollection} collection
* @returns {Promise<LibraryItem[]>}
*/
async getLibraryItemsForCollection(collection) {
if (!collection?.books?.length) {
Logger.error(`[libraryItemsBookFilters] Invalid collection`, collection)
return []
}
const books = await Database.models.book.findAll({
where: {
id: {
[Sequelize.Op.in]: collection.books
}
},
include: [
{
model: Database.models.libraryItem
},
{
model: sequelize.models.author,
through: {
attributes: []
}
},
{
model: sequelize.models.series,
through: {
attributes: ['sequence']
}
}
]
})
return books.map((book) => {
const libraryItem = book.libraryItem
delete book.libraryItem
libraryItem.media = book
return libraryItem
})
}
}