2
0
Files
bot/apps/viewer/services/api/utils.ts
2022-04-19 14:31:52 -07:00

55 lines
1.2 KiB
TypeScript

import { User } from 'db'
import prisma from 'libs/prisma'
import { NextApiRequest } from 'next'
export const authenticateUser = async (
req: NextApiRequest
): Promise<User | undefined> => authenticateByToken(extractBearerToken(req))
const authenticateByToken = async (
apiToken?: string
): Promise<User | undefined> => {
if (!apiToken) return
return (await prisma.user.findFirst({ where: { apiToken } })) as User
}
const extractBearerToken = (req: NextApiRequest) =>
req.headers['authorization']?.slice(7)
export const saveErrorLog = (
resultId: string | undefined,
message: string,
details?: any
) => saveLog('error', resultId, message, details)
export const saveSuccessLog = (
resultId: string | undefined,
message: string,
details?: any
) => saveLog('success', resultId, message, details)
const saveLog = (
status: 'error' | 'success',
resultId: string | undefined,
message: string,
details?: any
) => {
if (!resultId) return
return prisma.log.create({
data: {
resultId,
status,
description: message,
details: formatDetails(details),
},
})
}
const formatDetails = (details: any) => {
try {
return JSON.stringify(details, null, 2).substring(0, 1000)
} catch {
return details
}
}