import { Response } from 'express'; import { AuthRequest } from '../middleware/auth.middleware'; import { questionService } from '../services/question.service'; // POST /api/questions/search // 简单的题目搜索(按科目、难度筛选) export const searchQuestions = async (req: AuthRequest, res: Response) => { try { const result = await questionService.search(req.userId!, req.body); res.json(result); } catch (error) { console.error('Search questions error:', error); res.status(500).json({ error: 'Failed to search questions' }); } }; // POST /api/questions // 创建题目 export const createQuestion = async (req: AuthRequest, res: Response) => { try { try { const result = await questionService.create(req.userId!, req.body); res.json(result); } catch (e: any) { if (e.message === 'Missing required fields') return res.status(400).json({ error: e.message }); throw e; } } catch (error) { console.error('Create question error:', error); res.status(500).json({ error: 'Failed to create question' }); } }; // PUT /api/questions/:id export const updateQuestion = async (req: AuthRequest, res: Response) => { try { const { id } = req.params; try { const result = await questionService.update(req.userId!, id, req.body); res.json(result); } catch (e: any) { if (e.message === 'Question not found') return res.status(404).json({ error: e.message }); if (e.message === 'Permission denied') return res.status(403).json({ error: e.message }); throw e; } } catch (error) { console.error('Update question error:', error); res.status(500).json({ error: 'Failed to update question' }); } }; // DELETE /api/questions/:id export const deleteQuestion = async (req: AuthRequest, res: Response) => { try { const { id } = req.params; try { const result = await questionService.softDelete(req.userId!, id); res.json(result); } catch (e: any) { if (e.message === 'Question not found') return res.status(404).json({ error: e.message }); if (e.message === 'Permission denied') return res.status(403).json({ error: e.message }); throw e; } } catch (error) { console.error('Delete question error:', error); res.status(500).json({ error: 'Failed to delete question' }); } }; // POST /api/questions/parse-text export const parseText = async (req: AuthRequest, res: Response) => { try { try { const { text } = req.body; const questions = questionService.parseText(text); res.json(questions); } catch (e: any) { if (e.message === 'Text is required') return res.status(400).json({ error: e.message }); throw e; } } catch (error) { console.error('Parse text error:', error); res.status(500).json({ error: 'Failed to parse text' }); } };