From cb2b01bc62462109fb0772cdea04eb4edbf1a18b Mon Sep 17 00:00:00 2001 From: Backend Developer Date: Tue, 10 Mar 2026 09:15:06 +0000 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E7=AB=AF:=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9=E5=86=85=E5=AE=B9API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/index.js | 2 ++ backend/src/routes/folder.js | 37 ++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 backend/src/routes/folder.js diff --git a/backend/src/index.js b/backend/src/index.js index 6aa838f..e8afcee 100644 --- a/backend/src/index.js +++ b/backend/src/index.js @@ -13,6 +13,7 @@ const statsRoutes = require('./routes/stats'); const recentRoutes = require('./routes/recent'); const renameRoutes = require('./routes/rename'); const copyRoutes = require('./routes/copy'); +const folderRoutes = require('./routes/folder'); const errorHandler = require('./middleware/errorHandler'); const logger = require('./middleware/logger'); @@ -39,6 +40,7 @@ app.use('/api/stats', statsRoutes); app.use('/api/recent', recentRoutes); app.use('/api/rename', renameRoutes); app.use('/api/copy', copyRoutes); +app.use('/api/folder', folderRoutes); app.use(errorHandler); diff --git a/backend/src/routes/folder.js b/backend/src/routes/folder.js new file mode 100644 index 0000000..72680f8 --- /dev/null +++ b/backend/src/routes/folder.js @@ -0,0 +1,37 @@ +const express = require('express'); +const db = require('../db'); + +const router = express.Router(); + +// Get folder contents +router.get('/:id', (req, res) => { + const token = req.headers.authorization?.replace('Bearer ', ''); + if (!token) return res.status(401).json({ error: 'No token' }); + + try { + const jwt = require('jsonwebtoken'); + const decoded = jwt.verify(token, process.env.JWT_SECRET || 'clouddisk-secret-key'); + + // Get folder info + db.query( + 'SELECT * FROM files WHERE id = ? AND user_id = ? AND is_folder = 1', + [req.params.id, decoded.userId] + ).then(folders => { + if (folders.length === 0) { + return res.status(404).json({ error: 'Folder not found' }); + } + + // Get contents + return db.query( + 'SELECT * FROM files WHERE parent_id = ? AND user_id = ? AND deleted_at IS NULL ORDER BY is_folder DESC, name ASC', + [req.params.id, decoded.userId] + ).then(contents => { + res.json({ folder: folders[0], contents }); + }); + }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +module.exports = router;