From 6d8e60820e28c460612162f56ff8d484264616bc Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Fri, 3 Apr 2026 19:58:06 +0200 Subject: [PATCH] Filter out non-critcal non-available episodes --- api/src/controllers/entries.ts | 1 + api/src/models/entry/base-entry.ts | 7 +------ front/src/ui/details/season.tsx | 9 +++++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/api/src/controllers/entries.ts b/api/src/controllers/entries.ts index 70913a45..ecfd15b2 100644 --- a/api/src/controllers/entries.ts +++ b/api/src/controllers/entries.ts @@ -83,6 +83,7 @@ export const entryFilters: FilterDef = { order: { column: entries.order, type: "float" }, runtime: { column: entries.runtime, type: "float" }, airDate: { column: entries.airDate, type: "date" }, + content: { column: entries.content, type: "enum", values: EntryContent.enum }, playedDate: { column: entryProgressQ.playedDate, type: "date" }, isAvailable: { column: isNotNull(entries.availableSince), type: "bool" }, }; diff --git a/api/src/models/entry/base-entry.ts b/api/src/models/entry/base-entry.ts index 435cb10d..f98e0784 100644 --- a/api/src/models/entry/base-entry.ts +++ b/api/src/models/entry/base-entry.ts @@ -1,12 +1,7 @@ import { t } from "elysia"; import { Image } from "../utils/image"; -export const EntryContent = t.Union([ - t.Literal("story"), - t.Literal("recap"), - t.Literal("filler"), - t.Literal("ova"), -]); +export const EntryContent = t.UnionEnum(["story", "recap", "filler", "ova"]); export const BaseEntry = () => t.Object({ diff --git a/front/src/ui/details/season.tsx b/front/src/ui/details/season.tsx index 79599655..d18726ce 100644 --- a/front/src/ui/details/season.tsx +++ b/front/src/ui/details/season.tsx @@ -246,8 +246,13 @@ EntryList.query = ( path: ["api", "series", slug, "entries"], params: { query, - // TODO: use a better filter, it removes specials and movies - filter: season ? `seasonNumber ge ${season}` : undefined, + filter: [ + // TODO: use a better filter, it removes specials and movies + season && `seasonNumber ge ${season}`, + "(kind eq episode or isAvailable eq true or content eq story)", + ] + .filter((x) => x) + .join(" and "), includeSeasons: true, }, infinite: true,