Add entries dummy controller & fix entries types

This commit is contained in:
Zoe Roux 2024-11-09 16:03:01 +01:00
parent 7071e07ef4
commit 29d11720a5
No known key found for this signature in database
3 changed files with 49 additions and 12 deletions

View File

@ -0,0 +1,32 @@
import { Elysia, t } from "elysia";
import {
type Entry,
Episode,
Extra,
MovieEntry,
Special,
UnknownEntry,
} from "../models/entry";
export const entries = new Elysia()
.model({
episode: Episode,
movie_entry: MovieEntry,
special: Special,
extra: Extra,
unknown_entry: UnknownEntry,
error: t.Object({}),
})
.model((models) => ({
...models,
entry: t.Union([models.episode, models.movie_entry, models.special]),
}))
.get("/entries/:id", () => "hello" as unknown as Entry, {
response: { 200: "entry" },
})
.get("/extras/:id", () => "hello" as unknown as Extra, {
response: { 200: "extra" },
})
.get("/unknowns/:id", () => "hello" as unknown as UnknownEntry, {
response: { 200: "unknown_entry" },
});

View File

@ -2,6 +2,7 @@ import jwt from "@elysiajs/jwt";
import { swagger } from "@elysiajs/swagger"; import { swagger } from "@elysiajs/swagger";
import { migrate } from "drizzle-orm/node-postgres/migrator"; import { migrate } from "drizzle-orm/node-postgres/migrator";
import { Elysia } from "elysia"; import { Elysia } from "elysia";
import { entries } from "./controllers/entries";
import { movies } from "./controllers/movies"; import { movies } from "./controllers/movies";
import { series } from "./controllers/series"; import { series } from "./controllers/series";
import { videos } from "./controllers/videos"; import { videos } from "./controllers/videos";
@ -35,6 +36,7 @@ const app = new Elysia()
.get("/", () => "Hello Elysia") .get("/", () => "Hello Elysia")
.use(movies) .use(movies)
.use(series) .use(series)
.use(entries)
.use(videos) .use(videos)
.listen(3000); .listen(3000);

View File

@ -3,7 +3,7 @@ import { Image } from "./utils/image";
import { ExternalId, EpisodeId } from "./utils/external-id"; import { ExternalId, EpisodeId } from "./utils/external-id";
import { comment } from "../utils"; import { comment } from "../utils";
export const Entry = t.Object({ const BaseEntry = t.Object({
id: t.String({ format: "uuid" }), id: t.String({ format: "uuid" }),
slug: t.String(), slug: t.String(),
serieId: t.String({ format: "uuid" }), serieId: t.String({ format: "uuid" }),
@ -19,8 +19,8 @@ export const Entry = t.Object({
nextRefresh: t.String({ format: "date-time" }), nextRefresh: t.String({ format: "date-time" }),
}); });
export const Episode = t.Union([ export const Episode = t.Intersect([
Entry, BaseEntry,
t.Object({ t.Object({
kind: t.Literal("episode"), kind: t.Literal("episode"),
seasonId: t.String({ format: "uuid" }), seasonId: t.String({ format: "uuid" }),
@ -32,9 +32,9 @@ export const Episode = t.Union([
]); ]);
export type Episode = typeof Episode.static; export type Episode = typeof Episode.static;
export const MovieEntry = t.Union( export const MovieEntry = t.Intersect(
[ [
Entry, BaseEntry,
t.Object({ t.Object({
kind: t.Literal("movie"), kind: t.Literal("movie"),
order: t.Number({ order: t.Number({
@ -53,9 +53,9 @@ export const MovieEntry = t.Union(
); );
export type MovieEntry = typeof MovieEntry.static; export type MovieEntry = typeof MovieEntry.static;
export const Special = t.Union( export const Special = t.Intersect(
[ [
Entry, BaseEntry,
t.Object({ t.Object({
kind: t.Literal("special"), kind: t.Literal("special"),
order: t.Number({ order: t.Number({
@ -75,9 +75,9 @@ export const Special = t.Union(
); );
export type Special = typeof Special.static; export type Special = typeof Special.static;
export const Extra = t.Union( export const Extra = t.Intersect(
[ [
Entry, BaseEntry,
t.Object({ t.Object({
kind: t.Literal("extra"), kind: t.Literal("extra"),
number: t.Number({ minimum: 1 }), number: t.Number({ minimum: 1 }),
@ -94,9 +94,9 @@ export const Extra = t.Union(
); );
export type Extra = typeof Extra.static; export type Extra = typeof Extra.static;
export const Video = t.Union( export const UnknownEntry = t.Intersect(
[ [
t.Omit(Entry, ["serieId", "airDate"]), t.Omit(BaseEntry, ["serieId", "airDate", "description"]),
t.Object({ t.Object({
kind: t.Literal("unknown"), kind: t.Literal("unknown"),
}), }),
@ -108,4 +108,7 @@ export const Video = t.Union(
`, `,
}, },
); );
export type Video = typeof Video.static; export type UnknownEntry = typeof UnknownEntry.static;
export const Entry = t.Union([Episode, MovieEntry, Special]);
export type Entry = typeof Entry.static;