diff --git a/backend/src/index.js b/backend/src/index.js index 2b42646..cfef857 100644 --- a/backend/src/index.js +++ b/backend/src/index.js @@ -10,6 +10,7 @@ const searchRoutes = require('./routes/search'); const batchRoutes = require('./routes/batch'); const trashRoutes = require('./routes/trash'); const statsRoutes = require('./routes/stats'); +const recentRoutes = require('./routes/recent'); const errorHandler = require('./middleware/errorHandler'); const app = express(); @@ -28,6 +29,7 @@ app.use('/api/search', searchRoutes); app.use('/api/batch', batchRoutes); app.use('/api/trash', trashRoutes); app.use('/api/stats', statsRoutes); +app.use('/api/recent', recentRoutes); app.use(errorHandler); diff --git a/backend/src/routes/recent.js b/backend/src/routes/recent.js new file mode 100644 index 0000000..8e44836 --- /dev/null +++ b/backend/src/routes/recent.js @@ -0,0 +1,31 @@ +const express = require('express'); +const db = require('../db'); + +const router = express.Router(); + +// Get recently accessed files +router.get('/', (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'); + + const { limit = 20 } = req.query; + + db.query( + `SELECT * FROM files + WHERE user_id = ? AND deleted_at IS NULL + ORDER BY updated_at DESC + LIMIT ?`, + [decoded.userId, parseInt(limit)] + ).then(files => { + res.json({ files }); + }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}); + +module.exports = router;