From a34813b3ab81fc96ccea0152a7ec400c4e31e70d Mon Sep 17 00:00:00 2001 From: advplyr Date: Wed, 12 Feb 2025 08:52:20 -0600 Subject: [PATCH] Fix server crash remove column name ambiguity #3966 --- server/utils/queries/libraryItemsBookFilters.js | 8 ++++---- server/utils/queries/libraryItemsPodcastFilters.js | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/server/utils/queries/libraryItemsBookFilters.js b/server/utils/queries/libraryItemsBookFilters.js index 3adb929e..65ab1fef 100644 --- a/server/utils/queries/libraryItemsBookFilters.js +++ b/server/utils/queries/libraryItemsBookFilters.js @@ -580,9 +580,9 @@ module.exports = { // When collapsing series and sorting by title then use the series name instead of the book title // for this set an attribute "display_title" to use in sorting if (global.ServerSettings.sortingIgnorePrefix) { - bookAttributes.include.push([Sequelize.literal(`IFNULL((SELECT s.nameIgnorePrefix FROM bookSeries AS bs, series AS s WHERE bs.seriesId = s.id AND bs.bookId = book.id AND bs.id IN (${bookSeriesToInclude.map((v) => `"${v.id}"`).join(', ')})), titleIgnorePrefix)`), 'display_title']) + bookAttributes.include.push([Sequelize.literal(`IFNULL((SELECT s.nameIgnorePrefix FROM bookSeries AS bs, series AS s WHERE bs.seriesId = s.id AND bs.bookId = book.id AND bs.id IN (${bookSeriesToInclude.map((v) => `"${v.id}"`).join(', ')})), \`libraryItem\`.\`titleIgnorePrefix\`)`), 'display_title']) } else { - bookAttributes.include.push([Sequelize.literal(`IFNULL((SELECT s.name FROM bookSeries AS bs, series AS s WHERE bs.seriesId = s.id AND bs.bookId = book.id AND bs.id IN (${bookSeriesToInclude.map((v) => `"${v.id}"`).join(', ')})), \`book\`.\`title\`)`), 'display_title']) + bookAttributes.include.push([Sequelize.literal(`IFNULL((SELECT s.name FROM bookSeries AS bs, series AS s WHERE bs.seriesId = s.id AND bs.bookId = book.id AND bs.id IN (${bookSeriesToInclude.map((v) => `"${v.id}"`).join(', ')})), \`libraryItem\`.\`title\`)`), 'display_title']) } } @@ -1035,8 +1035,8 @@ module.exports = { const textSearchQuery = await Database.createTextSearchQuery(query) - const matchTitle = textSearchQuery.matchExpression('title') - const matchSubtitle = textSearchQuery.matchExpression('subtitle') + const matchTitle = textSearchQuery.matchExpression('book.title') + const matchSubtitle = textSearchQuery.matchExpression('book.subtitle') // Search title, subtitle, asin, isbn const books = await Database.bookModel.findAll({ diff --git a/server/utils/queries/libraryItemsPodcastFilters.js b/server/utils/queries/libraryItemsPodcastFilters.js index 36241f33..0cd159ba 100644 --- a/server/utils/queries/libraryItemsPodcastFilters.js +++ b/server/utils/queries/libraryItemsPodcastFilters.js @@ -84,7 +84,7 @@ module.exports = { return [[Sequelize.literal(`\`podcast\`.\`author\` COLLATE NOCASE ${nullDir}`)]] } else if (sortBy === 'media.metadata.title') { if (global.ServerSettings.sortingIgnorePrefix) { - return [[Sequelize.literal('titleIgnorePrefix COLLATE NOCASE'), dir]] + return [[Sequelize.literal('`podcast`.`titleIgnorePrefix` COLLATE NOCASE'), dir]] } else { return [[Sequelize.literal('`podcast`.`title` COLLATE NOCASE'), dir]] } @@ -321,8 +321,8 @@ module.exports = { const textSearchQuery = await Database.createTextSearchQuery(query) - const matchTitle = textSearchQuery.matchExpression('title') - const matchAuthor = textSearchQuery.matchExpression('author') + const matchTitle = textSearchQuery.matchExpression('podcast.title') + const matchAuthor = textSearchQuery.matchExpression('podcast.author') // Search title, author, itunesId, itunesArtistId const podcasts = await Database.podcastModel.findAll({