This commit is contained in:
fannta1990 2026-05-10 16:48:15 -06:00 committed by GitHub
commit 7e3c632041
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 1671 additions and 2 deletions

View file

@ -995,6 +995,47 @@ class LibraryController {
stats.totalSize = bookStats.totalSize
stats.totalDuration = bookStats.totalDuration
stats.numAudioTracks = bookStats.numAudioFiles
// Get top 10 rated items
try {
const topRatedReviews = await Database.reviewModel.findAll({
attributes: [
'libraryItemId',
[Sequelize.fn('AVG', Sequelize.col('review.rating')), 'avgRating'],
[Sequelize.fn('COUNT', Sequelize.col('review.id')), 'numReviews']
],
include: [
{
model: Database.libraryItemModel,
attributes: ['id'],
where: { libraryId: req.library.id },
include: [
{
model: Database.bookModel,
attributes: ['id', 'title']
}
]
}
],
group: ['libraryItemId', 'libraryItem.id', 'libraryItem.book.id'],
order: [
[Sequelize.literal('avgRating'), 'DESC'],
[Sequelize.literal('numReviews'), 'DESC']
],
limit: 10
})
stats.topRatedItems = topRatedReviews.map((r) => {
return {
id: r.libraryItemId,
title: r.libraryItem?.book?.title || 'Unknown',
avgRating: parseFloat(r.getDataValue('avgRating')),
numReviews: parseInt(r.getDataValue('numReviews'))
}
})
} catch (error) {
Logger.error('[LibraryController] Failed to get top rated items for stats', error)
stats.topRatedItems = []
}
} else {
const genres = await libraryItemsPodcastFilters.getGenresWithCount(req.library.id)
const podcastStats = await libraryItemsPodcastFilters.getPodcastLibraryStats(req.library.id)