Skip to content

Commit

Permalink
Fix decade filter and query by casting publishedYear to Int
Browse files Browse the repository at this point in the history
  • Loading branch information
advplyr committed Oct 15, 2024
1 parent 217038b commit d2c405c
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 10 deletions.
4 changes: 2 additions & 2 deletions client/store/libraries.js
Original file line number Diff line number Diff line change
Expand Up @@ -309,9 +309,9 @@ export const mutations = {
}

// Add publishedDecades
if (mediaMetadata.publishedYear) {
if (mediaMetadata.publishedYear && !isNaN(mediaMetadata.publishedYear)) {
const publishedYear = parseInt(mediaMetadata.publishedYear, 10)
const decade = Math.floor(publishedYear / 10) * 10
const decade = (Math.floor(publishedYear / 10) * 10).toString()
if (!state.filterData.publishedDecades.includes(decade)) {
state.filterData.publishedDecades.push(decade)
state.filterData.publishedDecades.sort((a, b) => a - b)
Expand Down
6 changes: 3 additions & 3 deletions server/utils/queries/libraryFilters.js
Original file line number Diff line number Diff line change
Expand Up @@ -508,9 +508,9 @@ module.exports = {
}
if (book.publisher) data.publishers.add(book.publisher)
// Check if published year exists and is valid
if (book.publishedYear && !isNaN(book.publishedYear) && book.publishedYear > 0 && book.publishedYear < 3000 && book.publishedYear.toString().length === 4) {
const decade = Math.floor(book.publishedYear / 10) * 10
data.publishedDecades.add(decade.toString())
if (book.publishedYear && !isNaN(book.publishedYear) && book.publishedYear > 0 && book.publishedYear < 3000) {
const decade = (Math.floor(book.publishedYear / 10) * 10).toString()
data.publishedDecades.add(decade)
}
if (book.language) data.languages.add(book.language)
}
Expand Down
9 changes: 4 additions & 5 deletions server/utils/queries/libraryItemsBookFilters.js
Original file line number Diff line number Diff line change
Expand Up @@ -229,11 +229,11 @@ module.exports = {
mediaWhere['$series.id$'] = null
}
} else if (group === 'publishedDecades') {
const startYear = value.padStart(4, '0')
const endYear = (parseInt(value, 10) + 9).toString().padStart(4, '0')
mediaWhere['publishedYear'] = {
const startYear = parseInt(value)
const endYear = parseInt(value, 10) + 9
mediaWhere = Sequelize.where(Sequelize.literal('CAST(`book`.`publishedYear` AS INTEGER)'), {
[Sequelize.Op.between]: [startYear, endYear]
}
})
}

return { mediaWhere, replacements }
Expand Down Expand Up @@ -505,7 +505,6 @@ module.exports = {
}

let { mediaWhere, replacements } = this.getMediaGroupQuery(filterGroup, filterValue)

let bookWhere = Array.isArray(mediaWhere) ? mediaWhere : [mediaWhere]

// User permissions
Expand Down

0 comments on commit d2c405c

Please sign in to comment.