mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-01-03 00:06:46 +01:00
Merge pull request #2724 from mikiher/fix-library-filter-data-access
Fix library filter data direct access
This commit is contained in:
commit
77559d29bb
@ -689,6 +689,34 @@ class Database {
|
|||||||
return this.libraryFilterData[libraryId].series.some(se => se.id === seriesId)
|
return this.libraryFilterData[libraryId].series.some(se => se.id === seriesId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get author id for library by name. Uses library filter data if available
|
||||||
|
*
|
||||||
|
* @param {string} libraryId
|
||||||
|
* @param {string} authorName
|
||||||
|
* @returns {Promise<string>} author id or null if not found
|
||||||
|
*/
|
||||||
|
async getAuthorIdByName(libraryId, authorName) {
|
||||||
|
if (!this.libraryFilterData[libraryId]) {
|
||||||
|
return (await this.authorModel.getOldByNameAndLibrary(authorName, libraryId))?.id || null
|
||||||
|
}
|
||||||
|
return this.libraryFilterData[libraryId].authors.find(au => au.name === authorName)?.id || null
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get series id for library by name. Uses library filter data if available
|
||||||
|
*
|
||||||
|
* @param {string} libraryId
|
||||||
|
* @param {string} seriesName
|
||||||
|
* @returns {Promise<string>} series id or null if not found
|
||||||
|
*/
|
||||||
|
async getSeriesIdByName(libraryId, seriesName) {
|
||||||
|
if (!this.libraryFilterData[libraryId]) {
|
||||||
|
return (await this.seriesModel.getOldByNameAndLibrary(seriesName, libraryId))?.id || null
|
||||||
|
}
|
||||||
|
return this.libraryFilterData[libraryId].series.find(se => se.name === seriesName)?.id || null
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reset numIssues for library
|
* Reset numIssues for library
|
||||||
* @param {string} libraryId
|
* @param {string} libraryId
|
||||||
|
@ -186,11 +186,11 @@ class BookScanner {
|
|||||||
// Check for authors added
|
// Check for authors added
|
||||||
for (const authorName of bookMetadata.authors) {
|
for (const authorName of bookMetadata.authors) {
|
||||||
if (!media.authors.some(au => au.name === authorName)) {
|
if (!media.authors.some(au => au.name === authorName)) {
|
||||||
const existingAuthor = Database.libraryFilterData[libraryItemData.libraryId].authors.find(au => au.name === authorName)
|
const existingAuthorId = await Database.getAuthorIdByName(libraryItemData.libraryId, authorName)
|
||||||
if (existingAuthor) {
|
if (existingAuthorId) {
|
||||||
await Database.bookAuthorModel.create({
|
await Database.bookAuthorModel.create({
|
||||||
bookId: media.id,
|
bookId: media.id,
|
||||||
authorId: existingAuthor.id
|
authorId: existingAuthorId
|
||||||
})
|
})
|
||||||
libraryScan.addLog(LogLevel.DEBUG, `Updating book "${bookMetadata.title}" added author "${authorName}"`)
|
libraryScan.addLog(LogLevel.DEBUG, `Updating book "${bookMetadata.title}" added author "${authorName}"`)
|
||||||
authorsUpdated = true
|
authorsUpdated = true
|
||||||
@ -221,11 +221,11 @@ class BookScanner {
|
|||||||
for (const seriesObj of bookMetadata.series) {
|
for (const seriesObj of bookMetadata.series) {
|
||||||
const existingBookSeries = media.series.find(se => se.name === seriesObj.name)
|
const existingBookSeries = media.series.find(se => se.name === seriesObj.name)
|
||||||
if (!existingBookSeries) {
|
if (!existingBookSeries) {
|
||||||
const existingSeries = Database.libraryFilterData[libraryItemData.libraryId].series.find(se => se.name === seriesObj.name)
|
const existingSeriesId = await Database.getSeriesIdByName(libraryItemData.libraryId, seriesObj.name)
|
||||||
if (existingSeries) {
|
if (existingSeriesId) {
|
||||||
await Database.bookSeriesModel.create({
|
await Database.bookSeriesModel.create({
|
||||||
bookId: media.id,
|
bookId: media.id,
|
||||||
seriesId: existingSeries.id,
|
seriesId: existingSeriesId,
|
||||||
sequence: seriesObj.sequence
|
sequence: seriesObj.sequence
|
||||||
})
|
})
|
||||||
libraryScan.addLog(LogLevel.DEBUG, `Updating book "${bookMetadata.title}" added series "${seriesObj.name}"${seriesObj.sequence ? ` with sequence "${seriesObj.sequence}"` : ''}`)
|
libraryScan.addLog(LogLevel.DEBUG, `Updating book "${bookMetadata.title}" added series "${seriesObj.name}"${seriesObj.sequence ? ` with sequence "${seriesObj.sequence}"` : ''}`)
|
||||||
@ -443,10 +443,10 @@ class BookScanner {
|
|||||||
}
|
}
|
||||||
if (bookMetadata.authors.length) {
|
if (bookMetadata.authors.length) {
|
||||||
for (const authorName of bookMetadata.authors) {
|
for (const authorName of bookMetadata.authors) {
|
||||||
const matchingAuthor = Database.libraryFilterData[libraryItemData.libraryId].authors.find(au => au.name === authorName)
|
const matchingAuthorId = await Database.getAuthorIdByName(libraryItemData.libraryId, authorName)
|
||||||
if (matchingAuthor) {
|
if (matchingAuthorId) {
|
||||||
bookObject.bookAuthors.push({
|
bookObject.bookAuthors.push({
|
||||||
authorId: matchingAuthor.id
|
authorId: matchingAuthorId
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// New author
|
// New author
|
||||||
@ -463,10 +463,10 @@ class BookScanner {
|
|||||||
if (bookMetadata.series.length) {
|
if (bookMetadata.series.length) {
|
||||||
for (const seriesObj of bookMetadata.series) {
|
for (const seriesObj of bookMetadata.series) {
|
||||||
if (!seriesObj.name) continue
|
if (!seriesObj.name) continue
|
||||||
const matchingSeries = Database.libraryFilterData[libraryItemData.libraryId].series.find(se => se.name === seriesObj.name)
|
const matchingSeriesId = await Database.getSeriesIdByName(libraryItemData.libraryId, seriesObj.name)
|
||||||
if (matchingSeries) {
|
if (matchingSeriesId) {
|
||||||
bookObject.bookSeries.push({
|
bookObject.bookSeries.push({
|
||||||
seriesId: matchingSeries.id,
|
seriesId: matchingSeriesId,
|
||||||
sequence: seriesObj.sequence
|
sequence: seriesObj.sequence
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user