🔊 Add prisma metrics to prometheus endpoint (#1420)
This commit is contained in:
@ -7,7 +7,8 @@ import { createSession } from './queries/createSession'
|
||||
import { deleteSession } from './queries/deleteSession'
|
||||
import * as Sentry from '@sentry/nextjs'
|
||||
import { saveVisitedEdges } from './queries/saveVisitedEdges'
|
||||
import { VisitedEdge } from '@typebot.io/prisma'
|
||||
import { Prisma, VisitedEdge } from '@typebot.io/prisma'
|
||||
import prisma from '@typebot.io/lib/prisma'
|
||||
|
||||
type Props = {
|
||||
session: Pick<ChatSession, 'state'> & { id?: string }
|
||||
@ -36,11 +37,13 @@ export const saveStateToDatabase = async ({
|
||||
!input && !containsSetVariableClientSideAction && !hasCustomEmbedBubble
|
||||
)
|
||||
|
||||
const queries: Prisma.PrismaPromise<any>[] = []
|
||||
|
||||
const resultId = state.typebotsQueue[0].resultId
|
||||
|
||||
if (id) {
|
||||
if (isCompleted && resultId) await deleteSession(id)
|
||||
else await updateSession({ id, state })
|
||||
if (isCompleted && resultId) queries.push(deleteSession(id))
|
||||
else queries.push(updateSession({ id, state }))
|
||||
}
|
||||
|
||||
const session =
|
||||
@ -48,18 +51,23 @@ export const saveStateToDatabase = async ({
|
||||
? { state, id }
|
||||
: await createSession({ id, state })
|
||||
|
||||
if (!resultId) return session
|
||||
if (!resultId) {
|
||||
if (queries.length > 0) await prisma.$transaction(queries)
|
||||
return session
|
||||
}
|
||||
|
||||
const answers = state.typebotsQueue[0].answers
|
||||
|
||||
await upsertResult({
|
||||
resultId,
|
||||
typebot: state.typebotsQueue[0].typebot,
|
||||
isCompleted: Boolean(
|
||||
!input && !containsSetVariableClientSideAction && answers.length > 0
|
||||
),
|
||||
hasStarted: answers.length > 0,
|
||||
})
|
||||
queries.push(
|
||||
upsertResult({
|
||||
resultId,
|
||||
typebot: state.typebotsQueue[0].typebot,
|
||||
isCompleted: Boolean(
|
||||
!input && !containsSetVariableClientSideAction && answers.length > 0
|
||||
),
|
||||
hasStarted: answers.length > 0,
|
||||
})
|
||||
)
|
||||
|
||||
if (logs && logs.length > 0)
|
||||
try {
|
||||
@ -75,7 +83,9 @@ export const saveStateToDatabase = async ({
|
||||
Sentry.captureException(e)
|
||||
}
|
||||
|
||||
if (visitedEdges.length > 0) await saveVisitedEdges(visitedEdges)
|
||||
if (visitedEdges.length > 0) queries.push(saveVisitedEdges(visitedEdges))
|
||||
|
||||
await prisma.$transaction(queries)
|
||||
|
||||
return session
|
||||
}
|
||||
|
Reference in New Issue
Block a user