|
const express = require('express'); |
|
const router = express.Router(); |
|
const { |
|
getMessages, |
|
updateMessage, |
|
saveConvo, |
|
saveMessage, |
|
deleteMessages, |
|
} = require('../../models'); |
|
const { countTokens } = require('../utils'); |
|
const { requireJwtAuth, validateMessageReq } = require('../middleware/'); |
|
|
|
router.use(requireJwtAuth); |
|
|
|
router.get('/:conversationId', validateMessageReq, async (req, res) => { |
|
const { conversationId } = req.params; |
|
res.status(200).send(await getMessages({ conversationId })); |
|
}); |
|
|
|
|
|
router.post('/:conversationId', validateMessageReq, async (req, res) => { |
|
const message = req.body; |
|
const savedMessage = await saveMessage({ ...message, user: req.user.id }); |
|
await saveConvo(req.user.id, savedMessage); |
|
res.status(201).send(savedMessage); |
|
}); |
|
|
|
|
|
router.get('/:conversationId/:messageId', validateMessageReq, async (req, res) => { |
|
const { conversationId, messageId } = req.params; |
|
res.status(200).send(await getMessages({ conversationId, messageId })); |
|
}); |
|
|
|
|
|
router.put('/:conversationId/:messageId', validateMessageReq, async (req, res) => { |
|
const { messageId, model } = req.params; |
|
const { text } = req.body; |
|
const tokenCount = await countTokens(text, model); |
|
res.status(201).send(await updateMessage({ messageId, text, tokenCount })); |
|
}); |
|
|
|
|
|
router.delete('/:conversationId/:messageId', validateMessageReq, async (req, res) => { |
|
const { messageId } = req.params; |
|
await deleteMessages({ messageId }); |
|
res.status(204).send(); |
|
}); |
|
|
|
module.exports = router; |
|
|