Move schema and turnstile into sep files, rename stream method, remove utils

This commit is contained in:
William Oldham
2023-12-17 22:04:25 +00:00
parent 631807b511
commit a7b6d61ad3
6 changed files with 81 additions and 173 deletions

41
src/schema.ts Normal file
View File

@@ -0,0 +1,41 @@
import { z } from 'zod';
export const tmdbIdSchema = z.string().regex(/^\d+$/);
export const mediaSchema = z
.discriminatedUnion('type', [
z.object({
type: z.literal('movie'),
title: z.string().min(1),
releaseYear: z.coerce.number().int().gt(0),
tmdbId: tmdbIdSchema,
}),
z.object({
type: z.literal('show'),
title: z.string().min(1),
releaseYear: z.coerce.number().int().gt(0),
tmdbId: tmdbIdSchema,
episodeNumber: z.coerce.number().int(),
episodeTmdbId: tmdbIdSchema,
seasonNumber: z.coerce.number().int(),
seasonTmdbId: tmdbIdSchema,
}),
])
.transform((query) => {
if (query.type == 'movie') return query;
return {
type: query.type,
title: query.title,
releaseYear: query.releaseYear,
tmdbId: query.tmdbId,
episode: {
number: query.episodeNumber,
tmdbId: query.episodeTmdbId,
},
season: {
number: query.seasonNumber,
tmdbId: query.seasonTmdbId,
},
};
});