mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-03-20 10:26:40 +01:00
Update jsdocs for expanded library items
This commit is contained in:
parent
b51853b3df
commit
7b0fa48e2e
@ -18,6 +18,19 @@ const Logger = require('../Logger')
|
|||||||
* @property {string} title
|
* @property {string} title
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef SeriesExpandedProperties
|
||||||
|
* @property {{sequence:string}} bookSeries
|
||||||
|
*
|
||||||
|
* @typedef {import('./Series') & SeriesExpandedProperties} SeriesExpanded
|
||||||
|
*
|
||||||
|
* @typedef BookExpandedProperties
|
||||||
|
* @property {import('./Author')[]} authors
|
||||||
|
* @property {SeriesExpanded[]} series
|
||||||
|
*
|
||||||
|
* @typedef {Book & BookExpandedProperties} BookExpanded
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef AudioFileObject
|
* @typedef AudioFileObject
|
||||||
* @property {number} index
|
* @property {number} index
|
||||||
@ -54,6 +67,8 @@ class Book extends Model {
|
|||||||
/** @type {string} */
|
/** @type {string} */
|
||||||
this.titleIgnorePrefix
|
this.titleIgnorePrefix
|
||||||
/** @type {string} */
|
/** @type {string} */
|
||||||
|
this.subtitle
|
||||||
|
/** @type {string} */
|
||||||
this.publishedYear
|
this.publishedYear
|
||||||
/** @type {string} */
|
/** @type {string} */
|
||||||
this.publishedDate
|
this.publishedDate
|
||||||
|
@ -15,6 +15,13 @@ const Podcast = require('./Podcast')
|
|||||||
* @property {{filename:string, ext:string, path:string, relPath:string, size:number, mtimeMs:number, ctimeMs:number, birthtimeMs:number}} metadata
|
* @property {{filename:string, ext:string, path:string, relPath:string, size:number, mtimeMs:number, ctimeMs:number, birthtimeMs:number}} metadata
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef LibraryItemExpandedProperties
|
||||||
|
* @property {Book.BookExpanded|Podcast.PodcastExpanded} media
|
||||||
|
*
|
||||||
|
* @typedef {LibraryItem & LibraryItemExpandedProperties} LibraryItemExpanded
|
||||||
|
*/
|
||||||
|
|
||||||
class LibraryItem extends Model {
|
class LibraryItem extends Model {
|
||||||
constructor(values, options) {
|
constructor(values, options) {
|
||||||
super(values, options)
|
super(values, options)
|
||||||
@ -412,6 +419,55 @@ class LibraryItem extends Model {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {string} libraryItemId
|
||||||
|
* @returns {Promise<LibraryItemExpanded>}
|
||||||
|
*/
|
||||||
|
static async getExpandedById(libraryItemId) {
|
||||||
|
if (!libraryItemId) return null
|
||||||
|
|
||||||
|
const libraryItem = await this.findByPk(libraryItemId)
|
||||||
|
if (!libraryItem) {
|
||||||
|
Logger.error(`[LibraryItem] Library item not found with id "${libraryItemId}"`)
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
if (libraryItem.mediaType === 'podcast') {
|
||||||
|
libraryItem.media = await libraryItem.getMedia({
|
||||||
|
include: [
|
||||||
|
{
|
||||||
|
model: this.sequelize.models.podcastEpisode
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
libraryItem.media = await libraryItem.getMedia({
|
||||||
|
include: [
|
||||||
|
{
|
||||||
|
model: this.sequelize.models.author,
|
||||||
|
through: {
|
||||||
|
attributes: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
model: this.sequelize.models.series,
|
||||||
|
through: {
|
||||||
|
attributes: ['sequence']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
order: [
|
||||||
|
[this.sequelize.models.author, this.sequelize.models.bookAuthor, 'createdAt', 'ASC'],
|
||||||
|
[this.sequelize.models.series, 'bookSeries', 'createdAt', 'ASC']
|
||||||
|
]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!libraryItem.media) return null
|
||||||
|
return libraryItem
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get old library item by id
|
* Get old library item by id
|
||||||
* @param {string} libraryItemId
|
* @param {string} libraryItemId
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
const { DataTypes, Model } = require('sequelize')
|
const { DataTypes, Model } = require('sequelize')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef PodcastExpandedProperties
|
||||||
|
* @property {import('./PodcastEpisode')[]} podcastEpisodes
|
||||||
|
*
|
||||||
|
* @typedef {Podcast & PodcastExpandedProperties} PodcastExpanded
|
||||||
|
*/
|
||||||
|
|
||||||
class Podcast extends Model {
|
class Podcast extends Model {
|
||||||
constructor(values, options) {
|
constructor(values, options) {
|
||||||
super(values, options)
|
super(values, options)
|
||||||
|
Loading…
Reference in New Issue
Block a user