forked from pinks/eris
1
0
Fork 0
nyx/api/paramsRoute.ts

40 lines
1.1 KiB
TypeScript

import { Elysia, t } from "elysia";
import { info } from "std/log/mod.ts";
import { defaultParamsSchema, getConfig, setConfig } from "../app/config.ts";
import { withSessionAdmin } from "./getUser.ts";
export const paramsRoute = new Elysia()
.get(
"",
async () => {
const config = await getConfig();
return config.defaultParams;
},
{
response: {
200: defaultParamsSchema,
},
},
)
.patch(
"",
async ({ query, body, set }) => {
return withSessionAdmin({ query, set }, async (user) => {
const config = await getConfig();
info(`User ${user.first_name} updated default params: ${JSON.stringify(body)}`);
const defaultParams = { ...config.defaultParams, ...body };
await setConfig({ defaultParams });
return config.defaultParams;
});
},
{
query: t.Object({ sessionId: t.String() }),
body: defaultParamsSchema,
response: {
200: defaultParamsSchema,
401: t.Literal("Must be logged in"),
403: t.Literal("Must be an admin"),
},
},
);