UNPKG

create-ex-den-kit

Version:

Create exam projects with Ex-Den-Kit

133 lines (113 loc) 3.57 kB
import express from 'express'; import { Entry, User } from '../models/index.js'; import { authMiddleware } from '../middleware/auth.js'; const router = express.Router(); // Получить все записи пользователя router.get('/my', authMiddleware, async (req, res) => { try { const entries = await Entry.findAll({ where: { userId: req.user.id, isArchived: false, }, include: [{ model: User, as: 'user', attributes: ['id', 'fullName', 'email'], }], order: [['createdAt', 'DESC']], }); res.json(entries); } catch (error) { console.error('Ошибка получения записей:', error); res.status(500).json({ error: 'Ошибка при получении записей' }); } }); // Получить архивные записи router.get('/archive', authMiddleware, async (req, res) => { try { const entries = await Entry.findAll({ where: { userId: req.user.id, isArchived: true, }, order: [['createdAt', 'DESC']], }); res.json(entries); } catch (error) { console.error('Ошибка получения архива:', error); res.status(500).json({ error: 'Ошибка при получении архива' }); } }); // Создать новую запись router.post('/', authMiddleware, async (req, res) => { try { const { type, data } = req.body; const entry = await Entry.create({ userId: req.user.id, type, data, status: 'new', }); res.json({ success: true, message: 'Запись успешно создана', entry, }); } catch (error) { console.error('Ошибка создания записи:', error); res.status(500).json({ error: 'Ошибка при создании записи' }); } }); // Удалить запись (архивировать) router.delete('/:id', authMiddleware, async (req, res) => { try { const entry = await Entry.findOne({ where: { id: req.params.id, userId: req.user.id, }, }); if (!entry) { return res.status(404).json({ error: 'Запись не найдена' }); } await entry.update({ isArchived: true }); res.json({ success: true, message: 'Запись перемещена в архив' }); } catch (error) { console.error('Ошибка удаления записи:', error); res.status(500).json({ error: 'Ошибка при удалении записи' }); } }); // Оставить отзыв (для некоторых тем) router.post('/:id/review', authMiddleware, async (req, res) => { try { const { review } = req.body; const entry = await Entry.findOne({ where: { id: req.params.id, userId: req.user.id, }, }); if (!entry) { return res.status(404).json({ error: 'Запись не найдена' }); } // Добавляем отзыв в data const updatedData = { ...entry.data, review, reviewDate: new Date(), }; await entry.update({ data: updatedData }); res.json({ success: true, message: 'Отзыв добавлен' }); } catch (error) { console.error('Ошибка добавления отзыва:', error); res.status(500).json({ error: 'Ошибка при добавлении отзыва' }); } }); export default router;