debug: try/catch in GET /, expires_at check in debug endpoint

This commit is contained in:
2026-06-13 12:49:21 +02:00
parent 953f8550d7
commit 355ead1e94

View File

@@ -10,8 +10,11 @@ function generateToken() { return crypto.randomBytes(24).toString('base64url');
// GET / eigene Shares auflisten // GET / eigene Shares auflisten
router.get('/', authenticate, (req, res) => { router.get('/', authenticate, (req, res) => {
try {
const shares = db.prepare(` const shares = db.prepare(`
SELECT s.*, f.name as file_name, f.size as file_size, SELECT s.id, s.token, s.user_id, s.file_id, s.folder_id, s.label,
s.password_hash, s.expires_at, s.created_at, s.download_count,
f.name as file_name, f.size as file_size,
fo.name as folder_name fo.name as folder_name
FROM public_file_shares s FROM public_file_shares s
LEFT JOIN files f ON f.id = s.file_id LEFT JOIN files f ON f.id = s.file_id
@@ -20,6 +23,10 @@ router.get('/', authenticate, (req, res) => {
ORDER BY s.created_at DESC ORDER BY s.created_at DESC
`).all(req.user.id); `).all(req.user.id);
res.json({ shares }); res.json({ shares });
} catch(e) {
console.error('[public-shares GET]', e.message);
res.status(500).json({ error: e.message });
}
}); });
// POST / neuen Share erstellen // POST / neuen Share erstellen
@@ -66,7 +73,15 @@ router.get('/debug-table', (req, res) => {
const count = exists ? db.prepare('SELECT COUNT(*) as n FROM public_file_shares').get() : null; const count = exists ? db.prepare('SELECT COUNT(*) as n FROM public_file_shares').get() : null;
const cols = exists ? db.pragma('table_info(public_file_shares)').map(c=>c.name) : []; const cols = exists ? db.pragma('table_info(public_file_shares)').map(c=>c.name) : [];
const sample = exists ? db.prepare('SELECT id, token, user_id, file_id, folder_id, expires_at, download_count FROM public_file_shares LIMIT 5').all() : []; const sample = exists ? db.prepare('SELECT id, token, user_id, file_id, folder_id, expires_at, download_count FROM public_file_shares LIMIT 5').all() : [];
res.json({ exists: !!exists, count: count?.n, cols, sample }); // Test: ersten Token direkt abfragen wie public endpoint es tut
let publicTest = null;
if (sample.length > 0) {
const t = sample[0].token;
const s = db.prepare('SELECT s.*, f.name as file_name, fo.name as folder_name FROM public_file_shares s LEFT JOIN files f ON f.id = s.file_id LEFT JOIN folders fo ON fo.id = s.folder_id WHERE s.token=?').get(t);
const now = Math.floor(Date.now()/1000);
publicTest = { token: t, expires_at: s?.expires_at, now, isExpired: s?.expires_at < now, typeof_expires: typeof s?.expires_at };
}
res.json({ exists: !!exists, count: count?.n, cols, sample, publicTest });
} catch(e) { res.status(500).json({ error: e.message }); } } catch(e) { res.status(500).json({ error: e.message }); }
}); });