pendingTools.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. const express = require('express');
  2. const router = express.Router();
  3. const { executeQuery } = require('../config/database');
  4. router.get('/', async (req, res) => {
  5. try {
  6. const { search, page = 1, pageSize = 10 } = req.query;
  7. const offset = (page - 1) * pageSize;
  8. let sql = `
  9. SELECT search_task_id, tools_name, tools_function_name, tools_function_desc,
  10. status, fail_reason, create_time, update_time
  11. FROM tools_info_search_task
  12. `;
  13. let params = [];
  14. if (search) {
  15. sql += ` WHERE tools_name LIKE ? OR tools_function_name LIKE ? OR tools_function_desc LIKE ?`;
  16. params = [`%${search}%`, `%${search}%`, `%${search}%`];
  17. }
  18. sql += ` ORDER BY create_time DESC LIMIT ? OFFSET ?`;
  19. params.push(parseInt(pageSize), offset);
  20. const countSql = search
  21. ? `SELECT COUNT(*) as total FROM tools_info_search_task WHERE tools_name LIKE ? OR tools_function_name LIKE ? OR tools_function_desc LIKE ?`
  22. : `SELECT COUNT(*) as total FROM tools_info_search_task`;
  23. const countParams = search ? [`%${search}%`, `%${search}%`, `%${search}%`] : [];
  24. const [data, countResult] = await Promise.all([
  25. executeQuery(sql, params),
  26. executeQuery(countSql, countParams)
  27. ]);
  28. res.json({
  29. data,
  30. total: countResult[0].total,
  31. page: parseInt(page),
  32. pageSize: parseInt(pageSize)
  33. });
  34. } catch (error) {
  35. console.error('Error fetching pending tools:', error);
  36. res.status(500).json({ error: 'Internal server error' });
  37. }
  38. });
  39. router.get('/:id', async (req, res) => {
  40. try {
  41. const { id } = req.params;
  42. const taskSql = `
  43. SELECT search_task_id, tools_name, tools_function_name, tools_function_desc,
  44. status, fail_reason, create_time, update_time
  45. FROM tools_info_search_task
  46. WHERE search_task_id = ?
  47. `;
  48. const detailSql = `
  49. SELECT search_task_id, search_channel, search_result, fail_reason,
  50. create_time, update_time
  51. FROM tools_info_search_task_detail
  52. WHERE search_task_id = ?
  53. `;
  54. const [taskData, detailData] = await Promise.all([
  55. executeQuery(taskSql, [id]),
  56. executeQuery(detailSql, [id])
  57. ]);
  58. if (taskData.length === 0) {
  59. return res.status(404).json({ error: 'Tool not found' });
  60. }
  61. res.json({
  62. task: taskData[0],
  63. detail: detailData[0] || null
  64. });
  65. } catch (error) {
  66. console.error('Error fetching pending tool detail:', error);
  67. res.status(500).json({ error: 'Internal server error' });
  68. }
  69. });
  70. router.put('/:id', async (req, res) => {
  71. try {
  72. const { id } = req.params;
  73. const { tools_name, tools_function_name, tools_function_desc, status, fail_reason } = req.body;
  74. const sql = `
  75. UPDATE tools_info_search_task
  76. SET tools_name = ?, tools_function_name = ?, tools_function_desc = ?,
  77. status = ?, fail_reason = ?, update_time = NOW()
  78. WHERE search_task_id = ?
  79. `;
  80. await executeQuery(sql, [tools_name, tools_function_name, tools_function_desc, status, fail_reason, id]);
  81. res.json({ message: 'Tool updated successfully' });
  82. } catch (error) {
  83. console.error('Error updating pending tool:', error);
  84. res.status(500).json({ error: 'Internal server error' });
  85. }
  86. });
  87. router.delete('/:id', async (req, res) => {
  88. try {
  89. const { id } = req.params;
  90. await executeQuery('DELETE FROM tools_info_search_task_detail WHERE search_task_id = ?', [id]);
  91. await executeQuery('DELETE FROM tools_info_search_task WHERE search_task_id = ?', [id]);
  92. res.json({ message: 'Tool deleted successfully' });
  93. } catch (error) {
  94. console.error('Error deleting pending tool:', error);
  95. res.status(500).json({ error: 'Internal server error' });
  96. }
  97. });
  98. module.exports = router;