123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- 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;
|