diff --git a/api/src/models/movie.ts b/api/src/models/movie.ts index a46aae73..76099c23 100644 --- a/api/src/models/movie.ts +++ b/api/src/models/movie.ts @@ -52,7 +52,7 @@ export const MovieTranslation = t.Object({ export type MovieTranslation = typeof MovieTranslation.static; export const Movie = t.Intersect([ - Resource, + Resource(), MovieTranslation, BaseMovie, t.Object({ isAvailable: t.Boolean() }), diff --git a/api/src/models/season.ts b/api/src/models/season.ts index 90ceae9e..4066b0c1 100644 --- a/api/src/models/season.ts +++ b/api/src/models/season.ts @@ -3,6 +3,7 @@ import { SeasonId } from "./utils/external-id"; import { Image, SeedImage } from "./utils/image"; import { TranslationRecord } from "./utils/language"; import { Resource } from "./utils/resource"; +import { bubbleImages, madeInAbyss, registerExamples } from "./examples"; export const BaseSeason = t.Object({ seasonNumber: t.Number({ minimum: 1 }), @@ -25,13 +26,13 @@ export const SeasonTranslation = t.Object({ }); export type SeasonTranslation = typeof SeasonTranslation.static; -export const Season = t.Intersect([Resource, BaseSeason, SeasonTranslation]); +export const Season = t.Intersect([Resource(), BaseSeason, SeasonTranslation]); export type Season = typeof Season.static; export const SeedSeason = t.Intersect([ t.Omit(BaseSeason, ["createdAt", "nextRefresh"]), t.Object({ - slug: t.String({ format: "slug" }), + slug: t.String({ format: "slug", examples: ["made-in-abyss-s1"] }), translations: TranslationRecord( t.Intersect([ t.Omit(SeasonTranslation, ["poster", "thumbnail", "banner"]), @@ -44,3 +45,9 @@ export const SeedSeason = t.Intersect([ ), }), ]); + +registerExamples(Season, { + ...madeInAbyss.seasons[0], + ...madeInAbyss.seasons[0].translations.en, + ...bubbleImages, +}); diff --git a/api/src/models/serie.ts b/api/src/models/serie.ts index db210eb5..a0b600b7 100644 --- a/api/src/models/serie.ts +++ b/api/src/models/serie.ts @@ -6,6 +6,7 @@ import { Genre } from "./utils/genres"; import { Image, SeedImage } from "./utils/image"; import { Language, TranslationRecord } from "./utils/language"; import { Resource } from "./utils/resource"; +import { SeedEntry } from "./entry"; export const SerieStatus = t.UnionEnum([ "unknown", @@ -55,7 +56,7 @@ export const SerieTranslation = t.Object({ }); export type SerieTranslation = typeof SerieTranslation.static; -export const Serie = t.Intersect([Resource, SerieTranslation, BaseSerie]); +export const Serie = t.Intersect([Resource(), SerieTranslation, BaseSerie]); export type Serie = typeof Serie.static; export const SeedSerie = t.Intersect([ @@ -74,7 +75,7 @@ export const SeedSerie = t.Intersect([ ]), ), seasons: t.Array(SeedSeason), - // entries: t.Array(SeedEntry), + entries: t.Array(SeedEntry), // extras: t.Optional(t.Array(SeedExtra)), }), ]); @@ -85,4 +86,3 @@ registerExamples(Serie, { ...madeInAbyss.translations.en, ...bubbleImages, }); -registerExamples(SeedSerie, madeInAbyss); diff --git a/api/src/models/utils/resource.ts b/api/src/models/utils/resource.ts index 6e837397..2fe7465d 100644 --- a/api/src/models/utils/resource.ts +++ b/api/src/models/utils/resource.ts @@ -8,10 +8,11 @@ FormatRegistry.Set("slug", (slug) => { return /^[a-z0-9-]+$/g.test(slug); }); -export const Resource = t.Object({ - id: t.String({ format: "uuid" }), - slug: t.String({ format: "slug" }), -}); +export const Resource = () => + t.Object({ + id: t.String({ format: "uuid" }), + slug: t.String({ format: "slug" }), + }); const checker = TypeCompiler.Compile(t.String({ format: "uuid" })); export const isUuid = (id: string) => checker.Check(id);