diff --git a/backend/src/tools/dateien/routes.js b/backend/src/tools/dateien/routes.js index f31c4e0..98ed37c 100644 --- a/backend/src/tools/dateien/routes.js +++ b/backend/src/tools/dateien/routes.js @@ -90,7 +90,17 @@ router.get('/folders', authenticate, (req, res) => { const totalSize = db.prepare('SELECT COALESCE(SUM(size),0) s FROM files WHERE folder_id=?').get(folder.id).s; return { ...folder, fileCount, subCount, totalSize }; }; - res.json({ own: own.map(enrichFolder), shared: shared.map(enrichFolder) }); + // Folders shared BY me + const sharedByMeFolders = parentId ? [] : db.prepare(` + SELECT DISTINCT f.*, u.username as owner, GROUP_CONCAT(su.username) as shared_with_names + FROM folders f JOIN users u ON u.id=f.user_id + JOIN folder_shares fs ON fs.folder_id=f.id + JOIN users su ON su.id=fs.shared_with + WHERE f.user_id=? + GROUP BY f.id ORDER BY f.name + `).all(uid); + + res.json({ own: own.map(enrichFolder), shared: shared.map(enrichFolder), sharedByMe: sharedByMeFolders.map(enrichFolder) }); }); // POST /folders @@ -153,6 +163,16 @@ router.get('/', authenticate, (req, res) => { const folderId = req.query.folder_id || null; const own = db.prepare('SELECT f.*, u.username as owner FROM files f JOIN users u ON u.id=f.user_id WHERE f.user_id=? AND f.folder_id IS ? ORDER BY f.created_at DESC').all(uid, folderId); + // Files shared BY me + const sharedByMe = folderId ? [] : db.prepare(` + SELECT DISTINCT f.*, u.username as owner, GROUP_CONCAT(su.username) as shared_with_names + FROM files f JOIN users u ON u.id=f.user_id + JOIN file_shares s ON s.file_id=f.id + JOIN users su ON su.id=s.shared_with + WHERE f.user_id=? + GROUP BY f.id ORDER BY f.created_at DESC + `).all(uid); + let shared = []; if (!folderId) { // Root: directly shared files @@ -171,7 +191,7 @@ router.get('/', authenticate, (req, res) => { shared = db.prepare('SELECT f.*, u.username as owner FROM files f JOIN users u ON u.id=f.user_id WHERE f.folder_id=? AND f.user_id=? ORDER BY f.created_at DESC').all(folderId, folder.user_id); } } - res.json({ own, shared }); + res.json({ own, shared, sharedByMe }); }); // POST / – Upload