mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Merge pull request #3491 from thatguy7/unicode-author-series
retire unicode handling workaround for Author and Series title
This commit is contained in:
		
						commit
						e42db121ea
					
				| @ -9,7 +9,6 @@ const libraryItemsBookFilters = require('../utils/queries/libraryItemsBookFilter | ||||
| const libraryItemFilters = require('../utils/queries/libraryItemFilters') | ||||
| const seriesFilters = require('../utils/queries/seriesFilters') | ||||
| const fileUtils = require('../utils/fileUtils') | ||||
| const { asciiOnlyToLowerCase } = require('../utils/index') | ||||
| const { createNewSortInstance } = require('../libs/fastSort') | ||||
| const naturalSort = createNewSortInstance({ | ||||
|   comparer: new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' }).compare | ||||
| @ -809,7 +808,7 @@ class LibraryController { | ||||
|     } | ||||
| 
 | ||||
|     const limit = req.query.limit || 12 | ||||
|     const query = asciiOnlyToLowerCase(req.query.q.trim()) | ||||
|     const query = req.query.q.trim() | ||||
| 
 | ||||
|     const matches = await libraryItemFilters.search(req.user, req.library, query, limit) | ||||
|     res.json(matches) | ||||
|  | ||||
| @ -1,6 +1,5 @@ | ||||
| const { DataTypes, Model, where, fn, col } = require('sequelize') | ||||
| const parseNameString = require('../utils/parsers/parseNameString') | ||||
| const { asciiOnlyToLowerCase } = require('../utils/index') | ||||
| 
 | ||||
| class Author extends Model { | ||||
|   constructor(values, options) { | ||||
| @ -56,7 +55,7 @@ class Author extends Model { | ||||
|   static async getByNameAndLibrary(authorName, libraryId) { | ||||
|     return this.findOne({ | ||||
|       where: [ | ||||
|         where(fn('lower', col('name')), asciiOnlyToLowerCase(authorName)), | ||||
|         where(fn('lower', col('name')), authorName.toLowerCase()), | ||||
|         { | ||||
|           libraryId | ||||
|         } | ||||
|  | ||||
| @ -1,7 +1,6 @@ | ||||
| const { DataTypes, Model, where, fn, col } = require('sequelize') | ||||
| 
 | ||||
| const { getTitlePrefixAtEnd } = require('../utils/index') | ||||
| const { asciiOnlyToLowerCase } = require('../utils/index') | ||||
| 
 | ||||
| class Series extends Model { | ||||
|   constructor(values, options) { | ||||
| @ -42,7 +41,7 @@ class Series extends Model { | ||||
|   static async getByNameAndLibrary(seriesName, libraryId) { | ||||
|     return this.findOne({ | ||||
|       where: [ | ||||
|         where(fn('lower', col('name')), asciiOnlyToLowerCase(seriesName)), | ||||
|         where(fn('lower', col('name')), seriesName.toLowerCase()), | ||||
|         { | ||||
|           libraryId | ||||
|         } | ||||
|  | ||||
| @ -194,29 +194,6 @@ module.exports.getTitlePrefixAtEnd = (title) => { | ||||
|   return prefix ? `${sort}, ${prefix}` : title | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * to lower case for only ascii characters | ||||
|  * used to handle sqlite that doesnt support unicode lower | ||||
|  * @see https://github.com/advplyr/audiobookshelf/issues/2187
 | ||||
|  * | ||||
|  * @param {string} str | ||||
|  * @returns {string} | ||||
|  */ | ||||
| module.exports.asciiOnlyToLowerCase = (str) => { | ||||
|   if (!str) return '' | ||||
| 
 | ||||
|   let temp = '' | ||||
|   for (let chars of str) { | ||||
|     let value = chars.charCodeAt() | ||||
|     if (value >= 65 && value <= 90) { | ||||
|       temp += String.fromCharCode(value + 32) | ||||
|     } else { | ||||
|       temp += chars | ||||
|     } | ||||
|   } | ||||
|   return temp | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Escape string used in RegExp | ||||
|  * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user