create-ex-den-kit
Version:
Create exam projects with Ex-Den-Kit
133 lines (113 loc) • 3.57 kB
JavaScript
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;