Spaces:
Running
Running
import express from 'express'; | |
import logger from '../utils/logger'; | |
import db from '../db/index'; | |
import { eq } from 'drizzle-orm'; | |
import { chats, messages } from '../db/schema'; | |
const router = express.Router(); | |
router.get('/', async (_, res) => { | |
try { | |
let chats = await db.query.chats.findMany(); | |
chats = chats.reverse(); | |
return res.status(200).json({ chats: chats }); | |
} catch (err) { | |
res.status(500).json({ message: 'An error has occurred.' }); | |
logger.error(`Error in getting chats: ${err.message}`); | |
} | |
}); | |
router.get('/:id', async (req, res) => { | |
try { | |
const chatExists = await db.query.chats.findFirst({ | |
where: eq(chats.id, req.params.id), | |
}); | |
if (!chatExists) { | |
return res.status(404).json({ message: 'Chat not found' }); | |
} | |
const chatMessages = await db.query.messages.findMany({ | |
where: eq(messages.chatId, req.params.id), | |
}); | |
return res.status(200).json({ chat: chatExists, messages: chatMessages }); | |
} catch (err) { | |
res.status(500).json({ message: 'An error has occurred.' }); | |
logger.error(`Error in getting chat: ${err.message}`); | |
} | |
}); | |
router.delete(`/:id`, async (req, res) => { | |
try { | |
const chatExists = await db.query.chats.findFirst({ | |
where: eq(chats.id, req.params.id), | |
}); | |
if (!chatExists) { | |
return res.status(404).json({ message: 'Chat not found' }); | |
} | |
await db.delete(chats).where(eq(chats.id, req.params.id)).execute(); | |
await db | |
.delete(messages) | |
.where(eq(messages.chatId, req.params.id)) | |
.execute(); | |
return res.status(200).json({ message: 'Chat deleted successfully' }); | |
} catch (err) { | |
res.status(500).json({ message: 'An error has occurred.' }); | |
logger.error(`Error in deleting chat: ${err.message}`); | |
} | |
}); | |
export default router; | |