mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +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