Fix library query sort by title, add indexes for books and libraryItems

This commit is contained in:
advplyr 2023-08-10 17:46:27 -05:00
parent 8c9fc3ddb5
commit aac2879652
3 changed files with 40 additions and 3 deletions

View File

@ -151,7 +151,27 @@ module.exports = (sequelize) => {
genres: DataTypes.JSON
}, {
sequelize,
modelName: 'book'
modelName: 'book',
indexes: [
{
fields: [{
name: 'title',
collate: 'NOCASE'
}]
},
{
fields: [{
name: 'titleIgnorePrefix',
collate: 'NOCASE'
}]
},
{
fields: ['publishedYear']
},
{
fields: ['duration']
}
]
})
return Book

View File

@ -63,6 +63,10 @@ module.exports = (sequelize) => {
*/
static getLibraryItemsIncrement(offset, limit) {
return this.findAll({
benchmark: true,
logging: (sql, timeMs) => {
console.log(`[Query] Elapsed ${timeMs}ms.`)
},
include: [
{
model: sequelize.models.book,
@ -89,7 +93,7 @@ module.exports = (sequelize) => {
['createdAt', 'ASC'],
// Ensure author & series stay in the same order
[sequelize.models.book, sequelize.models.author, sequelize.models.bookAuthor, 'createdAt', 'ASC'],
[sequelize.models.book, sequelize.models.series, 'bookSeries', 'createdAt', 'ASC'],
[sequelize.models.book, sequelize.models.series, 'bookSeries', 'createdAt', 'ASC']
],
offset,
limit
@ -702,6 +706,15 @@ module.exports = (sequelize) => {
},
{
fields: ['mediaId']
},
{
fields: ['libraryId', 'mediaType']
},
{
fields: ['birthtime']
},
{
fields: ['mtime']
}
]
})

View File

@ -257,7 +257,7 @@ module.exports = {
if (global.ServerSettings.sortingIgnorePrefix) {
return [[Sequelize.literal('titleIgnorePrefix COLLATE NOCASE'), dir]]
} else {
return [[Sequelize.literal('title COLLATE NOCASE'), dir]]
return [[Sequelize.literal('`book`.`title` COLLATE NOCASE'), dir]]
}
} else if (sortBy === 'sequence') {
const nullDir = sortDesc ? 'DESC NULLS FIRST' : 'ASC NULLS LAST'
@ -546,6 +546,10 @@ module.exports = {
distinct: true,
attributes: bookAttributes,
replacements,
benchmark: true,
logging: (sql, timeMs) => {
console.log(`[Query] Elapsed ${timeMs}ms.`)
},
include: [
{
model: Database.models.libraryItem,