2
0

🔊 Add prisma metrics to prometheus endpoint (#1420)

This commit is contained in:
Baptiste Arnaud
2024-04-06 15:08:57 +02:00
committed by GitHub
parent d96f384e02
commit 6e0388c501
9 changed files with 92 additions and 75 deletions

View File

@ -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
}