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 | ||||
|  */ | ||||
| 
 | ||||
| /** | ||||
|  * @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 | ||||
|  * @property {number} index | ||||
| @ -54,6 +67,8 @@ class Book extends Model { | ||||
|     /** @type {string} */ | ||||
|     this.titleIgnorePrefix | ||||
|     /** @type {string} */ | ||||
|     this.subtitle | ||||
|     /** @type {string} */ | ||||
|     this.publishedYear | ||||
|     /** @type {string} */ | ||||
|     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 | ||||
|  */ | ||||
| 
 | ||||
| /** | ||||
|  * @typedef LibraryItemExpandedProperties | ||||
|  * @property {Book.BookExpanded|Podcast.PodcastExpanded} media  | ||||
|  *  | ||||
|  * @typedef {LibraryItem & LibraryItemExpandedProperties} LibraryItemExpanded | ||||
|  */ | ||||
| 
 | ||||
| class LibraryItem extends Model { | ||||
|   constructor(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 | ||||
|    * @param {string} libraryItemId  | ||||
|  | ||||
| @ -1,5 +1,12 @@ | ||||
| const { DataTypes, Model } = require('sequelize') | ||||
| 
 | ||||
| /** | ||||
|  * @typedef PodcastExpandedProperties | ||||
|  * @property {import('./PodcastEpisode')[]} podcastEpisodes | ||||
|  *  | ||||
|  * @typedef {Podcast & PodcastExpandedProperties} PodcastExpanded | ||||
|  */ | ||||
| 
 | ||||
| class Podcast extends Model { | ||||
|   constructor(values, options) { | ||||
|     super(values, options) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user