Fix:New authors not setting lastFirst column, updates for new Series model

This commit is contained in:
advplyr 2024-09-01 15:08:56 -05:00
parent 7ff72a8920
commit db86bfd63d
14 changed files with 234 additions and 225 deletions

View file

@ -104,6 +104,9 @@ class AuthorController {
let hasUpdated = false
const authorNameUpdate = payload.name !== undefined && payload.name !== req.author.name
if (authorNameUpdate) {
payload.lastFirst = Database.authorModel.getLastFirst(payload.name)
}
// Check if author name matches another author and merge the authors
let existingAuthor = null
@ -169,6 +172,11 @@ class AuthorController {
return
}
// If lastFirst is not set, get it from the name
if (!authorNameUpdate && !req.author.lastFirst) {
payload.lastFirst = Database.authorModel.getLastFirst(req.author.name)
}
// Regular author update
req.author.set(payload)
if (req.author.changed()) {

View file

@ -629,11 +629,10 @@ class LibraryController {
const series = await Database.seriesModel.findByPk(req.params.seriesId)
if (!series) return res.sendStatus(404)
const oldSeries = series.getOldSeries()
const libraryItemsInSeries = await libraryItemsBookFilters.getLibraryItemsForSeries(oldSeries, req.user)
const libraryItemsInSeries = await libraryItemsBookFilters.getLibraryItemsForSeries(series, req.user)
const seriesJson = oldSeries.toJSON()
const seriesJson = series.toOldJSON()
if (include.includes('progress')) {
const libraryItemsFinished = libraryItemsInSeries.filter((li) => !!req.user.getMediaProgress(li.media.id)?.isFinished)
seriesJson.progress = {

View file

@ -125,7 +125,7 @@ class RSSFeedController {
async openRSSFeedForSeries(req, res) {
const options = req.body || {}
const series = await Database.seriesModel.getOldById(req.params.seriesId)
const series = await Database.seriesModel.findByPk(req.params.seriesId)
if (!series) return res.sendStatus(404)
// Check request body options exist
@ -140,7 +140,7 @@ class RSSFeedController {
return res.status(400).send('Slug already in use')
}
const seriesJson = series.toJSON()
const seriesJson = series.toOldJSON()
// Get books in series that have audio tracks
seriesJson.books = (await libraryItemsBookFilters.getLibraryItemsForSeries(series)).filter((li) => li.media.numTracks)

View file

@ -9,6 +9,11 @@ const libraryItemsBookFilters = require('../utils/queries/libraryItemsBookFilter
* @property {import('../models/User')} user
*
* @typedef {Request & RequestUserObject} RequestWithUser
*
* @typedef RequestEntityObject
* @property {import('../models/Series')} series
*
* @typedef {RequestWithUser & RequestEntityObject} SeriesControllerRequest
*/
class SeriesController {
@ -21,7 +26,7 @@ class SeriesController {
* TODO: Update mobile app to use /api/libraries/:id/series/:seriesId API route instead
* Series are not library specific so we need to know what the library id is
*
* @param {RequestWithUser} req
* @param {SeriesControllerRequest} req
* @param {Response} res
*/
async findOne(req, res) {
@ -30,7 +35,7 @@ class SeriesController {
.map((v) => v.trim())
.filter((v) => !!v)
const seriesJson = req.series.toJSON()
const seriesJson = req.series.toOldJSON()
// Add progress map with isFinished flag
if (include.includes('progress')) {
@ -54,17 +59,19 @@ class SeriesController {
}
/**
* TODO: Update to use new model
*
* @param {RequestWithUser} req
* @param {SeriesControllerRequest} req
* @param {Response} res
*/
async update(req, res) {
const hasUpdated = req.series.update(req.body)
const oldSeries = req.series.getOldSeries()
const hasUpdated = oldSeries.update(req.body)
if (hasUpdated) {
await Database.updateSeries(req.series)
SocketAuthority.emitter('series_updated', req.series.toJSON())
await Database.updateSeries(oldSeries)
SocketAuthority.emitter('series_updated', oldSeries.toJSON())
}
res.json(req.series.toJSON())
res.json(oldSeries.toJSON())
}
/**
@ -74,7 +81,7 @@ class SeriesController {
* @param {NextFunction} next
*/
async middleware(req, res, next) {
const series = await Database.seriesModel.getOldById(req.params.id)
const series = await Database.seriesModel.findByPk(req.params.id)
if (!series) return res.sendStatus(404)
/**