leaky-ships/leaky-ships/lib/backend/sendResponse.ts
2023-07-11 19:25:44 +02:00

25 lines
627 B
TypeScript

import { NextApiRequest, NextApiResponse } from "next"
import logging, { Logging } from "./logging"
export interface Result<T> {
message: string
statusCode?: number
body?: T
type?: Logging[]
redirectUrl?: string
}
export default function sendResponse<T>(
req: NextApiRequest,
res: NextApiResponse<T>,
result: Result<T>,
) {
if (result.redirectUrl) {
res.redirect(result.statusCode ?? 307, result.redirectUrl)
} else {
res.status(result.statusCode ?? 200)
result.body ? res.json(result.body) : res.end()
logging(result.message, result.type ?? ["debug"], req)
}
return "done" as const
}