mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import { Elysia } from "elysia";
|
|
import { entriesH } from "./controllers/entries";
|
|
import { imagesH } from "./controllers/images";
|
|
import { seasonsH } from "./controllers/seasons";
|
|
import { seed } from "./controllers/seed";
|
|
import { collections } from "./controllers/shows/collections";
|
|
import { movies } from "./controllers/shows/movies";
|
|
import { series } from "./controllers/shows/series";
|
|
import { showsH } from "./controllers/shows/shows";
|
|
import { staffH } from "./controllers/staff";
|
|
import { studiosH } from "./controllers/studios";
|
|
import { videosH } from "./controllers/videos";
|
|
import type { KError } from "./models/error";
|
|
|
|
export const base = new Elysia({ name: "base" })
|
|
.onError(({ code, error }) => {
|
|
if (code === "VALIDATION") {
|
|
const details = JSON.parse(error.message);
|
|
if (details.code === "KError") {
|
|
const { code, ...ret } = details;
|
|
return ret;
|
|
}
|
|
details.errors = details.errors.map((x: any) => {
|
|
const { schema, ...err } = x;
|
|
return err;
|
|
});
|
|
return {
|
|
status: error.status,
|
|
message: `Validation error on ${details.on}.`,
|
|
details: details,
|
|
} as KError;
|
|
}
|
|
if (code === "INTERNAL_SERVER_ERROR") {
|
|
console.error(error);
|
|
return {
|
|
status: 500,
|
|
message: error.message,
|
|
details: error,
|
|
} as KError;
|
|
}
|
|
if (code === "NOT_FOUND") {
|
|
return error;
|
|
}
|
|
console.error(code, error);
|
|
return error;
|
|
})
|
|
.as("plugin");
|
|
|
|
export const app = new Elysia({ prefix: process.env.KYOO_PREFIX })
|
|
.use(base)
|
|
.use(showsH)
|
|
.use(movies)
|
|
.use(series)
|
|
.use(collections)
|
|
.use(entriesH)
|
|
.use(seasonsH)
|
|
.use(studiosH)
|
|
.use(staffH)
|
|
.use(videosH)
|
|
.use(imagesH)
|
|
.use(seed);
|