use asciiOnlyToLowerCase to match lower function behaviour of SQLite

This commit is contained in:
Oleg Ivasenko 2024-09-13 17:09:32 +00:00
parent def34a860b
commit 0af29a378a
2 changed files with 16 additions and 38 deletions

View File

@ -1,5 +1,6 @@
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) {
@ -53,27 +54,15 @@ class Author extends Model {
* @returns {Promise<Author>}
*/
static async getByNameAndLibrary(authorName, libraryId) {
const containsOnlyASCII = /^[\u0000-\u007f]*$/.test(authorName)
// SQLite does not support lower with non-Unicode chars
if (!containsOnlyASCII) {
return this.findOne({
where: {
name: authorName,
libraryId: libraryId
}
})
} else {
return this.findOne({
where: [
where(fn('lower', col('name')), authorName.toLowerCase()),
where(fn('lower', col('name')), asciiOnlyToLowerCase(authorName)),
{
libraryId
}
]
})
}
}
/**
*

View File

@ -1,6 +1,7 @@
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) {
@ -39,27 +40,15 @@ class Series extends Model {
* @returns {Promise<Series>}
*/
static async getByNameAndLibrary(seriesName, libraryId) {
const containsOnlyASCII = /^[\u0000-\u007f]*$/.test(authorName)
// SQLite does not support lower with non-Unicode chars
if (!containsOnlyASCII) {
return this.findOne({
where: {
name: seriesName,
libraryId: libraryId
}
})
} else {
return this.findOne({
where: [
where(fn('lower', col('name')), seriesName.toLowerCase()),
where(fn('lower', col('name')), asciiOnlyToLowerCase(seriesName)),
{
libraryId
}
]
})
}
}
/**
* Initialize model