mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-06-04 18:00:45 +02:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5ca12eee19 | |||
| ebdf377fc1 | |||
| 808d23561c |
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "audiobookshelf-client",
|
"name": "audiobookshelf-client",
|
||||||
"version": "2.19.1",
|
"version": "2.19.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "audiobookshelf-client",
|
"name": "audiobookshelf-client",
|
||||||
"version": "2.19.1",
|
"version": "2.19.2",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nuxtjs/axios": "^5.13.6",
|
"@nuxtjs/axios": "^5.13.6",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "audiobookshelf-client",
|
"name": "audiobookshelf-client",
|
||||||
"version": "2.19.1",
|
"version": "2.19.2",
|
||||||
"buildNumber": 1,
|
"buildNumber": 1,
|
||||||
"description": "Self-hosted audiobook and podcast client",
|
"description": "Self-hosted audiobook and podcast client",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "audiobookshelf",
|
"name": "audiobookshelf",
|
||||||
"version": "2.19.1",
|
"version": "2.19.2",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "audiobookshelf",
|
"name": "audiobookshelf",
|
||||||
"version": "2.19.1",
|
"version": "2.19.2",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^0.27.2",
|
"axios": "^0.27.2",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "audiobookshelf",
|
"name": "audiobookshelf",
|
||||||
"version": "2.19.1",
|
"version": "2.19.2",
|
||||||
"buildNumber": 1,
|
"buildNumber": 1,
|
||||||
"description": "Self-hosted audiobook and podcast server",
|
"description": "Self-hosted audiobook and podcast server",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ const authorFilters = require('./authorFilters')
|
|||||||
|
|
||||||
const ShareManager = require('../../managers/ShareManager')
|
const ShareManager = require('../../managers/ShareManager')
|
||||||
const { profile } = require('../profiler')
|
const { profile } = require('../profiler')
|
||||||
|
const stringifySequelizeQuery = require('../stringifySequelizeQuery')
|
||||||
const countCache = new Map()
|
const countCache = new Map()
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
@@ -345,7 +345,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
async findAndCountAll(findOptions, limit, offset) {
|
async findAndCountAll(findOptions, limit, offset) {
|
||||||
const findOptionsKey = JSON.stringify(findOptions)
|
const findOptionsKey = stringifySequelizeQuery(findOptions)
|
||||||
Logger.debug(`[LibraryItemsBookFilters] findOptionsKey: ${findOptionsKey}`)
|
Logger.debug(`[LibraryItemsBookFilters] findOptionsKey: ${findOptionsKey}`)
|
||||||
|
|
||||||
findOptions.limit = limit || null
|
findOptions.limit = limit || null
|
||||||
@@ -353,6 +353,7 @@ module.exports = {
|
|||||||
|
|
||||||
if (countCache.has(findOptionsKey)) {
|
if (countCache.has(findOptionsKey)) {
|
||||||
const rows = await Database.bookModel.findAll(findOptions)
|
const rows = await Database.bookModel.findAll(findOptions)
|
||||||
|
|
||||||
return { rows, count: countCache.get(findOptionsKey) }
|
return { rows, count: countCache.get(findOptionsKey) }
|
||||||
} else {
|
} else {
|
||||||
const result = await Database.bookModel.findAndCountAll(findOptions)
|
const result = await Database.bookModel.findAndCountAll(findOptions)
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
function stringifySequelizeQuery(findOptions) {
|
||||||
|
// Helper function to handle symbols in nested objects
|
||||||
|
function handleSymbols(obj) {
|
||||||
|
if (!obj || typeof obj !== 'object') return obj
|
||||||
|
|
||||||
|
if (Array.isArray(obj)) {
|
||||||
|
return obj.map(handleSymbols)
|
||||||
|
}
|
||||||
|
|
||||||
|
const newObj = {}
|
||||||
|
for (const [key, value] of Object.entries(obj)) {
|
||||||
|
// Handle Symbol keys from Object.getOwnPropertySymbols
|
||||||
|
Object.getOwnPropertySymbols(obj).forEach((sym) => {
|
||||||
|
newObj[`__Op.${sym.toString()}`] = handleSymbols(obj[sym])
|
||||||
|
})
|
||||||
|
|
||||||
|
// Handle regular keys
|
||||||
|
if (typeof key === 'string') {
|
||||||
|
if (value && typeof value === 'object' && Object.getPrototypeOf(value) === Symbol.prototype) {
|
||||||
|
// Handle Symbol values
|
||||||
|
newObj[key] = `__Op.${value.toString()}`
|
||||||
|
} else {
|
||||||
|
// Recursively handle nested objects
|
||||||
|
newObj[key] = handleSymbols(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newObj
|
||||||
|
}
|
||||||
|
|
||||||
|
const sanitizedOptions = handleSymbols(findOptions)
|
||||||
|
return JSON.stringify(sanitizedOptions)
|
||||||
|
}
|
||||||
|
module.exports = stringifySequelizeQuery
|
||||||
Reference in New Issue
Block a user