Added series page and scene page section, no overview (yet).

This commit is contained in:
2024-06-02 00:30:56 +02:00
parent eb2807d0e0
commit 5cfab6c9ca
12 changed files with 988 additions and 27 deletions

View File

@@ -80,6 +80,12 @@ function curateScene(rawScene, assets) {
title: movie.title,
covers: movie.movie_covers?.map((cover) => curateMedia(cover)).toSorted((coverA, coverB) => coverA.index - coverB.index) || [],
})),
series: assets.series.map((serie) => ({
id: serie.id,
slug: serie.slug,
title: serie.title,
poster: curateMedia(serie.serie_poster),
})),
poster: curateMedia(assets.poster),
trailer: curateMedia(assets.trailer),
teaser: curateMedia(assets.teaser),
@@ -99,6 +105,7 @@ export async function fetchScenesById(sceneIds, { reqUser, ...context } = {}) {
directors,
tags,
movies,
series,
posters,
photos,
trailers,
@@ -141,6 +148,13 @@ export async function fetchScenesById(sceneIds, { reqUser, ...context } = {}) {
.leftJoin('media', 'media.id', 'movies_covers.media_id')
.whereIn('scene_id', sceneIds)
.groupBy('movies.id', 'movies_scenes.scene_id'),
series: knex('series_scenes')
.select('series_scenes.scene_id', 'series.*', knex.raw('row_to_json(media) as serie_poster'))
.leftJoin('series', 'series.id', 'series_scenes.serie_id')
.leftJoin('series_posters', 'series_posters.serie_id', 'series.id')
.leftJoin('media', 'media.id', 'series_posters.media_id')
.whereIn('scene_id', sceneIds)
.groupBy('series.id', 'series_scenes.scene_id', 'media.*'),
posters: knex('releases_posters')
.whereIn('release_id', sceneIds)
.leftJoin('media', 'media.id', 'releases_posters.media_id'),
@@ -198,13 +212,12 @@ export async function fetchScenesById(sceneIds, { reqUser, ...context } = {}) {
return null;
}
console.log(movies);
const sceneChannel = channels.find((entity) => entity.id === scene.entity_id);
const sceneActors = actors.filter((actor) => actor.release_id === sceneId);
const sceneDirectors = directors.filter((director) => director.release_id === sceneId);
const sceneTags = tags.filter((tag) => tag.release_id === sceneId);
const sceneMovies = movies.filter((movie) => movie.scene_id === sceneId);
const sceneSeries = series.filter((serie) => serie.scene_id === sceneId);
const scenePoster = posters.find((poster) => poster.release_id === sceneId);
const scenePhotos = photos.filter((photo) => photo.release_id === sceneId);
const sceneTrailers = trailers.find((trailer) => trailer.release_id === sceneId);
@@ -218,6 +231,7 @@ export async function fetchScenesById(sceneIds, { reqUser, ...context } = {}) {
directors: sceneDirectors,
tags: sceneTags,
movies: sceneMovies,
series: sceneSeries,
poster: scenePoster,
photos: scenePhotos,
trailer: sceneTrailers,
@@ -490,6 +504,10 @@ async function queryManticoreSql(filters, options, _reqUser) {
builder.whereRaw('any(movie_ids) = ?', filters.movieId);
}
if (filters.serieId) {
builder.whereRaw('any(serie_ids) = ?', filters.serieId);
}
if (typeof filters.isShowcased === 'boolean') {
builder.where('scenes.is_showcased', filters.isShowcased);
}