1
import { StatusCodes } from 'http-status-codes'
2
import { Request, Response, NextFunction } from 'express'
3
import statsService from '../../services/stats'
4
import { chatType } from '../../Interface'
5
import { InternalFlowiseError } from '../../errors/internalFlowiseError'
6
import { getErrorMessage } from '../../errors/utils'
8
const getChatflowStats = async (req: Request, res: Response, next: NextFunction) => {
10
if (typeof req.params === 'undefined' || !req.params.id) {
11
throw new InternalFlowiseError(StatusCodes.PRECONDITION_FAILED, `Error: statsController.getChatflowStats - id not provided!`)
13
const chatflowid = req.params.id
14
let chatTypeFilter = req.query?.chatType as chatType | undefined
15
const startDate = req.query?.startDate as string | undefined
16
const endDate = req.query?.endDate as string | undefined
19
const chatTypeFilterArray = JSON.parse(chatTypeFilter)
20
if (chatTypeFilterArray.includes(chatType.EXTERNAL) && chatTypeFilterArray.includes(chatType.INTERNAL)) {
21
chatTypeFilter = undefined
22
} else if (chatTypeFilterArray.includes(chatType.EXTERNAL)) {
23
chatTypeFilter = chatType.EXTERNAL
24
} else if (chatTypeFilterArray.includes(chatType.INTERNAL)) {
25
chatTypeFilter = chatType.INTERNAL
28
throw new InternalFlowiseError(
29
StatusCodes.INTERNAL_SERVER_ERROR,
30
`Error: statsController.getChatflowStats - ${getErrorMessage(e)}`
34
const apiResponse = await statsService.getChatflowStats(chatflowid, chatTypeFilter, startDate, endDate, '', true)
35
return res.json(apiResponse)