From a54c09ae15e9b196219803052d660cdc4f448588 Mon Sep 17 00:00:00 2001 From: Denis Shatskiy Date: Mon, 14 Jul 2025 16:09:34 +0700 Subject: [PATCH] feat: Implement complete server deletion endpoint in API and update FilterManager to utilize it for removing server configurations and associated files --- backend/server.js | 30 ++++++++++++++++++++++++++++++ frontend/src/FilterManager.jsx | 6 +++--- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/backend/server.js b/backend/server.js index 3cb7e4c..384a183 100644 --- a/backend/server.js +++ b/backend/server.js @@ -648,6 +648,36 @@ app.delete('/api/server-configs/:serverId', async (req, res) => { } }); +// Delete server completely (config + filters) +app.delete('/api/server-configs/:serverId/complete', async (req, res) => { + const { serverId } = req.params; + + try { + // Удаляем конфигурацию сервера + const configParams = { + Bucket: BUCKET_NAME, + Key: `filter-manager/config-${serverId}.txt`, + }; + + // Удаляем фильтры сервера + const filtersParams = { + Bucket: BUCKET_NAME, + Key: `filter-manager/server-filters-${serverId}.json`, + }; + + // Удаляем оба файла параллельно + await Promise.allSettled([ + s3.deleteObject(configParams).promise(), + s3.deleteObject(filtersParams).promise() + ]); + + res.send('Server and all associated files deleted successfully'); + } catch (error) { + console.error(error); + res.status(500).send('Error deleting server files from S3'); + } +}); + // --- Server Filters Routes --- // Get server filters diff --git a/frontend/src/FilterManager.jsx b/frontend/src/FilterManager.jsx index 6d63f46..062e938 100644 --- a/frontend/src/FilterManager.jsx +++ b/frontend/src/FilterManager.jsx @@ -149,14 +149,14 @@ function FilterManager() { const updatedServers = servers.filter(s => s.id !== serverId); await axios.post(`${API_URL}/server-configs`, { servers: updatedServers }); - // Также удаляем файл конфигурации сервера - await axios.delete(`${API_URL}/server-configs/${serverId}`); + // Удаляем все файлы сервера (конфигурацию и фильтры) + await axios.delete(`${API_URL}/server-configs/${serverId}/complete`); setServers(updatedServers); if (selectedServer?.id === serverId) { setSelectedServer(null); } - setSuccess('Сервер успешно удален!'); + setSuccess('Сервер и все связанные файлы успешно удалены!'); setTimeout(() => setSuccess(''), 3000); } catch (error) { console.error('Error deleting server:', error);