Update library item example route

This commit is contained in:
advplyr 2023-03-19 17:41:27 -05:00
parent 54ca58e610
commit 258b9ec54e
2 changed files with 77 additions and 4 deletions

View File

@ -104,7 +104,7 @@ class Server {
await this.playbackSessionManager.removeOrphanStreams()
// TODO: Test new db connection
const force = true
const force = false
await Database.init(force)
if (force) await dbMigration3.migrate()

View File

@ -1,13 +1,86 @@
const { Sequelize } = require('sequelize')
const Database = require('../Database')
class LibraryItemController {
constructor() { }
// Example get library item fully expanded or minified
// Example get library item full, expanded, minified
async get(req, res) {
const key = req.query.minified == 1 ? 'minified' : 'full'
const key = req.query.minified == 1 ? 'minified' : req.query.expanded == 1 ? 'expanded' : 'full'
const include = {
minified: [
{
model: Database.models.book,
attributes: [
'id', 'title', 'subtitle', 'publishedYear', 'publishedDate', 'publisher', 'description', 'isbn', 'asin', 'language', 'explicit',
[Sequelize.literal('(SELECT COUNT(*) FROM "audioTracks" WHERE "audioTracks"."mediaItemId" = book.id)'), 'numAudioTracks'],
[Sequelize.literal('(SELECT COUNT(*) FROM "bookChapters" WHERE "bookChapters"."bookId" = book.id)'), 'numChapters']
],
include: [
{
model: Database.models.genre,
attributes: ['id', 'name'],
through: {
attributes: []
}
},
{
model: Database.models.tag,
attributes: ['id', 'name'],
through: {
attributes: []
}
},
{
model: Database.models.person,
as: 'authors',
attributes: ['id', 'name'],
through: {
attributes: []
}
},
{
model: Database.models.person,
as: 'narrators',
attributes: ['id', 'name'],
through: {
attributes: []
}
},
{
model: Database.models.series,
attributes: ['id', 'name'],
through: {
attributes: ['sequence']
}
}
]
},
{
model: Database.models.podcast,
attributes: [
'id', 'title', 'author', 'releaseDate', 'feedURL', 'imageURL', 'description', 'itunesPageURL', 'itunesId', 'itunesArtistId', 'language', 'podcastType', 'explicit', 'autoDownloadEpisodes',
[Sequelize.literal('(SELECT COUNT(*) FROM "podcastEpisodes" WHERE "podcastEpisodes"."podcastId" = podcast.id)'), 'numPodcastEpisodes']
],
include: [
{
model: Database.models.genre,
attributes: ['id', 'name'],
through: {
attributes: []
}
},
{
model: Database.models.tag,
attributes: ['id', 'name'],
through: {
attributes: []
}
},
]
}
],
full: [
{
model: Database.models.book,
include: [
@ -79,7 +152,7 @@ class LibraryItemController {
]
}
],
full: [
expanded: [
{
model: Database.models.book,
include: [