const express = require('express'); const router = express.Router(); const { executeQuery } = require('../config/database'); router.get('/', async (req, res) => { try { const { search, page = 1, pageSize = 10 } = req.query; const offset = (page - 1) * pageSize; let sql = ` SELECT search_task_id, tools_name, tools_function_name, tools_function_desc, status, fail_reason, create_time, update_time FROM tools_info_search_task `; let params = []; if (search) { sql += ` WHERE tools_name LIKE ? OR tools_function_name LIKE ? OR tools_function_desc LIKE ?`; params = [`%${search}%`, `%${search}%`, `%${search}%`]; } sql += ` ORDER BY create_time DESC LIMIT ? OFFSET ?`; params.push(parseInt(pageSize), offset); const countSql = search ? `SELECT COUNT(*) as total FROM tools_info_search_task WHERE tools_name LIKE ? OR tools_function_name LIKE ? OR tools_function_desc LIKE ?` : `SELECT COUNT(*) as total FROM tools_info_search_task`; const countParams = search ? [`%${search}%`, `%${search}%`, `%${search}%`] : []; const [data, countResult] = await Promise.all([ executeQuery(sql, params), executeQuery(countSql, countParams) ]); res.json({ data, total: countResult[0].total, page: parseInt(page), pageSize: parseInt(pageSize) }); } catch (error) { console.error('Error fetching pending tools:', error); res.status(500).json({ error: 'Internal server error' }); } }); router.get('/:id', async (req, res) => { try { const { id } = req.params; const taskSql = ` SELECT search_task_id, tools_name, tools_function_name, tools_function_desc, status, fail_reason, create_time, update_time FROM tools_info_search_task WHERE search_task_id = ? `; const detailSql = ` SELECT search_task_id, search_channel, search_result, fail_reason, create_time, update_time FROM tools_info_search_task_detail WHERE search_task_id = ? `; const [taskData, detailData] = await Promise.all([ executeQuery(taskSql, [id]), executeQuery(detailSql, [id]) ]); if (taskData.length === 0) { return res.status(404).json({ error: 'Tool not found' }); } res.json({ task: taskData[0], detail: detailData[0] || null }); } catch (error) { console.error('Error fetching pending tool detail:', error); res.status(500).json({ error: 'Internal server error' }); } }); router.put('/:id', async (req, res) => { try { const { id } = req.params; const { tools_name, tools_function_name, tools_function_desc, status, fail_reason } = req.body; const sql = ` UPDATE tools_info_search_task SET tools_name = ?, tools_function_name = ?, tools_function_desc = ?, status = ?, fail_reason = ?, update_time = NOW() WHERE search_task_id = ? `; await executeQuery(sql, [tools_name, tools_function_name, tools_function_desc, status, fail_reason, id]); res.json({ message: 'Tool updated successfully' }); } catch (error) { console.error('Error updating pending tool:', error); res.status(500).json({ error: 'Internal server error' }); } }); router.delete('/:id', async (req, res) => { try { const { id } = req.params; await executeQuery('DELETE FROM tools_info_search_task_detail WHERE search_task_id = ?', [id]); await executeQuery('DELETE FROM tools_info_search_task WHERE search_task_id = ?', [id]); res.json({ message: 'Tool deleted successfully' }); } catch (error) { console.error('Error deleting pending tool:', error); res.status(500).json({ error: 'Internal server error' }); } }); module.exports = router;