From e6db1495abcee8203befbddc4bb49f6892645530 Mon Sep 17 00:00:00 2001 From: Oleg Ivasenko Date: Tue, 8 Oct 2024 19:52:26 +0000 Subject: [PATCH 1/2] retire unicode handling workaround for Author and Series title --- server/models/Author.js | 3 +-- server/models/Series.js | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/server/models/Author.js b/server/models/Author.js index 40e7f75a..f3bbba57 100644 --- a/server/models/Author.js +++ b/server/models/Author.js @@ -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 } diff --git a/server/models/Series.js b/server/models/Series.js index dc8d110f..c57a1a11 100644 --- a/server/models/Series.js +++ b/server/models/Series.js @@ -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 } From 0adceaa3f0652eb589e6d86bd4d6977aef233ea9 Mon Sep 17 00:00:00 2001 From: advplyr Date: Tue, 8 Oct 2024 16:59:45 -0500 Subject: [PATCH 2/2] Remove asciiOnlyToLowerCase --- server/controllers/LibraryController.js | 3 +-- server/utils/index.js | 23 ----------------------- 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/server/controllers/LibraryController.js b/server/controllers/LibraryController.js index d1e2becb..a2725543 100644 --- a/server/controllers/LibraryController.js +++ b/server/controllers/LibraryController.js @@ -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) diff --git a/server/utils/index.js b/server/utils/index.js index 2d52bcd0..fa7ae92e 100644 --- a/server/utils/index.js +++ b/server/utils/index.js @@ -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