mongodb-chatbot-server
Version:
A chatbot server for retrieval augmented generation (RAG).
65 lines • 2.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeCreateConversationRoute = exports.CreateConversationRequest = void 0;
const zod_1 = require("zod");
const utils_1 = require("./utils");
const utils_2 = require("../../utils");
const validateRequestSchema_1 = require("../../middleware/validateRequestSchema");
exports.CreateConversationRequest = validateRequestSchema_1.SomeExpressRequest.extend({
headers: zod_1.z.object({
"req-id": zod_1.z.string(),
}),
});
function makeCreateConversationRoute({ conversations, createConversationCustomData, systemPrompt, }) {
return async (req, res) => {
const reqId = (0, utils_2.getRequestId)(req);
try {
(0, utils_2.logRequest)({
reqId,
message: `Creating conversation`,
});
const customData = await getCustomData(req, res, createConversationCustomData);
const conversationInDb = await conversations.create({
customData,
initialMessages: [systemPrompt],
});
const responseConversation = (0, utils_1.convertConversationFromDbToApi)(conversationInDb);
res.status(200).json(responseConversation);
(0, utils_2.logRequest)({
reqId,
message: `Responding with conversation ${conversationInDb._id.toString()}`,
});
}
catch (error) {
const { httpStatus, message } = error.name === "RequestError"
? error
: (0, utils_1.makeRequestError)({
message: error.message,
stack: error.stack,
httpStatus: 500,
});
(0, utils_2.sendErrorResponse)({
res,
reqId,
httpStatus,
errorMessage: message,
});
}
};
}
exports.makeCreateConversationRoute = makeCreateConversationRoute;
async function getCustomData(req, res, createConversationCustomData) {
try {
if (createConversationCustomData) {
return await createConversationCustomData(req, res);
}
}
catch (error) {
throw (0, utils_1.makeRequestError)({
message: "Error parsing custom data from the request",
stack: error.stack,
httpStatus: 500,
});
}
}
//# sourceMappingURL=createConversation.js.map