1
import { Request, Response, NextFunction } from 'express'
2
import chatflowsService from '../../services/chatflows'
3
import { ChatFlow } from '../../database/entities/ChatFlow'
4
import { createRateLimiter } from '../../utils/rateLimit'
5
import { getApiKey } from '../../utils/apiKey'
6
import { InternalFlowiseError } from '../../errors/internalFlowiseError'
7
import { StatusCodes } from 'http-status-codes'
9
const checkIfChatflowIsValidForStreaming = async (req: Request, res: Response, next: NextFunction) => {
11
if (typeof req.params === 'undefined' || !req.params.id) {
12
throw new InternalFlowiseError(
13
StatusCodes.PRECONDITION_FAILED,
14
`Error: chatflowsRouter.checkIfChatflowIsValidForStreaming - id not provided!`
17
const apiResponse = await chatflowsService.checkIfChatflowIsValidForStreaming(req.params.id)
18
return res.json(apiResponse)
24
const checkIfChatflowIsValidForUploads = async (req: Request, res: Response, next: NextFunction) => {
26
if (typeof req.params === 'undefined' || !req.params.id) {
27
throw new InternalFlowiseError(
28
StatusCodes.PRECONDITION_FAILED,
29
`Error: chatflowsRouter.checkIfChatflowIsValidForUploads - id not provided!`
32
const apiResponse = await chatflowsService.checkIfChatflowIsValidForUploads(req.params.id)
33
return res.json(apiResponse)
39
const deleteChatflow = async (req: Request, res: Response, next: NextFunction) => {
41
if (typeof req.params === 'undefined' || !req.params.id) {
42
throw new InternalFlowiseError(StatusCodes.PRECONDITION_FAILED, `Error: chatflowsRouter.deleteChatflow - id not provided!`)
44
const apiResponse = await chatflowsService.deleteChatflow(req.params.id)
45
return res.json(apiResponse)
51
const getAllChatflows = async (req: Request, res: Response, next: NextFunction) => {
53
const apiResponse = await chatflowsService.getAllChatflows()
54
return res.json(apiResponse)
60
// Get specific chatflow via api key
61
const getChatflowByApiKey = async (req: Request, res: Response, next: NextFunction) => {
63
if (typeof req.params === 'undefined' || !req.params.apiKey) {
64
throw new InternalFlowiseError(
65
StatusCodes.PRECONDITION_FAILED,
66
`Error: chatflowsRouter.getChatflowByApiKey - apiKey not provided!`
69
const apiKey = await getApiKey(req.params.apiKey)
71
return res.status(401).send('Unauthorized')
73
const apiResponse = await chatflowsService.getChatflowByApiKey(apiKey.id)
74
return res.json(apiResponse)
80
const getChatflowById = async (req: Request, res: Response, next: NextFunction) => {
82
if (typeof req.params === 'undefined' || !req.params.id) {
83
throw new InternalFlowiseError(StatusCodes.PRECONDITION_FAILED, `Error: chatflowsRouter.getChatflowById - id not provided!`)
85
const apiResponse = await chatflowsService.getChatflowById(req.params.id)
86
return res.json(apiResponse)
92
const saveChatflow = async (req: Request, res: Response, next: NextFunction) => {
95
throw new InternalFlowiseError(StatusCodes.PRECONDITION_FAILED, `Error: chatflowsRouter.saveChatflow - body not provided!`)
98
const newChatFlow = new ChatFlow()
99
Object.assign(newChatFlow, body)
100
const apiResponse = await chatflowsService.saveChatflow(newChatFlow)
101
return res.json(apiResponse)
107
const updateChatflow = async (req: Request, res: Response, next: NextFunction) => {
109
if (typeof req.params === 'undefined' || !req.params.id) {
110
throw new InternalFlowiseError(StatusCodes.PRECONDITION_FAILED, `Error: chatflowsRouter.updateChatflow - id not provided!`)
112
const chatflow = await chatflowsService.getChatflowById(req.params.id)
114
return res.status(404).send(`Chatflow ${req.params.id} not found`)
117
const body = req.body
118
const updateChatFlow = new ChatFlow()
119
Object.assign(updateChatFlow, body)
121
updateChatFlow.id = chatflow.id
122
createRateLimiter(updateChatFlow)
124
const apiResponse = await chatflowsService.updateChatflow(chatflow, updateChatFlow)
125
return res.json(apiResponse)
131
const getSinglePublicChatflow = async (req: Request, res: Response, next: NextFunction) => {
133
if (typeof req.params === 'undefined' || !req.params.id) {
134
throw new InternalFlowiseError(
135
StatusCodes.PRECONDITION_FAILED,
136
`Error: chatflowsRouter.getSinglePublicChatflow - id not provided!`
139
const apiResponse = await chatflowsService.getSinglePublicChatflow(req.params.id)
140
return res.json(apiResponse)
146
const getSinglePublicChatbotConfig = async (req: Request, res: Response, next: NextFunction) => {
148
if (typeof req.params === 'undefined' || !req.params.id) {
149
throw new InternalFlowiseError(
150
StatusCodes.PRECONDITION_FAILED,
151
`Error: chatflowsRouter.getSinglePublicChatbotConfig - id not provided!`
154
const apiResponse = await chatflowsService.getSinglePublicChatbotConfig(req.params.id)
155
return res.json(apiResponse)
162
checkIfChatflowIsValidForStreaming,
163
checkIfChatflowIsValidForUploads,
170
getSinglePublicChatflow,
171
getSinglePublicChatbotConfig