Suche: vollständig - alle Tools, Einstellungen, Elektro-Sektionen, Todos, Dateien, Push, Kalender, QR-Codes
This commit is contained in:
@@ -4,54 +4,83 @@ const { authenticate } = require('../middleware/auth');
|
||||
const router = express.Router();
|
||||
|
||||
router.get('/', authenticate, (req, res) => {
|
||||
const q = (req.query.q || '').trim();
|
||||
if (q.length < 2) return res.json({ links:[], snippets:[], calculations:[], orders:[] });
|
||||
const q = (req.query.q || '').trim();
|
||||
if (q.length < 2) return res.json({
|
||||
links:[], folders:[], snippets:[], calculations:[], orders:[],
|
||||
todos:[], files:[], file_folders:[], push_schedules:[], calendar_feeds:[], qr_codes:[]
|
||||
});
|
||||
const uid = req.user.id;
|
||||
const like = `%${q.toLowerCase()}%`;
|
||||
|
||||
const links = db.prepare(`
|
||||
SELECT id, title, url, icon, description, folder_id FROM link_list
|
||||
const safeAll = (fn) => { try { return fn(); } catch { return []; } };
|
||||
|
||||
const links = safeAll(() => db.prepare(`
|
||||
SELECT id, title, url, icon, description FROM link_list
|
||||
WHERE user_id=? AND (LOWER(title) LIKE ? OR LOWER(url) LIKE ? OR LOWER(description) LIKE ?)
|
||||
ORDER BY title LIMIT 8
|
||||
`).all(uid, like, like, like);
|
||||
`).all(uid, like, like, like));
|
||||
|
||||
let folders = [];
|
||||
try {
|
||||
folders = db.prepare(`
|
||||
SELECT id, name, icon FROM link_list_folders
|
||||
WHERE user_id=? AND LOWER(name) LIKE ?
|
||||
ORDER BY name LIMIT 5
|
||||
`).all(uid, like);
|
||||
} catch {}
|
||||
const folders = safeAll(() => db.prepare(`
|
||||
SELECT id, name, icon FROM link_list_folders
|
||||
WHERE user_id=? AND LOWER(name) LIKE ?
|
||||
ORDER BY name LIMIT 5
|
||||
`).all(uid, like));
|
||||
|
||||
let snippets = [];
|
||||
try {
|
||||
snippets = db.prepare(`
|
||||
SELECT id, title, description, language FROM snippets
|
||||
WHERE user_id=? AND (LOWER(title) LIKE ? OR LOWER(description) LIKE ?)
|
||||
ORDER BY title LIMIT 5
|
||||
`).all(uid, like, like);
|
||||
} catch {}
|
||||
const snippets = safeAll(() => db.prepare(`
|
||||
SELECT id, title, description, language FROM snippets
|
||||
WHERE user_id=? AND (LOWER(title) LIKE ? OR LOWER(description) LIKE ?)
|
||||
ORDER BY title LIMIT 6
|
||||
`).all(uid, like, like));
|
||||
|
||||
let calculations = [];
|
||||
try {
|
||||
calculations = db.prepare(`
|
||||
SELECT id, name FROM calculations
|
||||
WHERE user_id=? AND LOWER(name) LIKE ?
|
||||
ORDER BY name LIMIT 5
|
||||
`).all(uid, like);
|
||||
} catch {}
|
||||
const calculations = safeAll(() => db.prepare(`
|
||||
SELECT id, name FROM calculations
|
||||
WHERE user_id=? AND LOWER(name) LIKE ?
|
||||
ORDER BY name LIMIT 5
|
||||
`).all(uid, like));
|
||||
|
||||
let orders = [];
|
||||
try {
|
||||
orders = db.prepare(`
|
||||
SELECT id, name, status FROM orders
|
||||
WHERE user_id=? AND LOWER(name) LIKE ?
|
||||
ORDER BY name LIMIT 5
|
||||
`).all(uid, like);
|
||||
} catch {}
|
||||
const orders = safeAll(() => db.prepare(`
|
||||
SELECT id, name, status FROM orders
|
||||
WHERE user_id=? AND LOWER(name) LIKE ?
|
||||
ORDER BY name LIMIT 5
|
||||
`).all(uid, like));
|
||||
|
||||
res.json({ links, folders, snippets, calculations, orders });
|
||||
const todos = safeAll(() => db.prepare(`
|
||||
SELECT id, text, done FROM todos
|
||||
WHERE user_id=? AND LOWER(text) LIKE ?
|
||||
ORDER BY done, created_at DESC LIMIT 5
|
||||
`).all(uid, like));
|
||||
|
||||
const files = safeAll(() => db.prepare(`
|
||||
SELECT id, originalname, mimetype, size FROM files
|
||||
WHERE user_id=? AND (LOWER(originalname) LIKE ? OR LOWER(filename) LIKE ?)
|
||||
ORDER BY originalname LIMIT 6
|
||||
`).all(uid, like, like));
|
||||
|
||||
const file_folders = safeAll(() => db.prepare(`
|
||||
SELECT id, name FROM folders
|
||||
WHERE user_id=? AND LOWER(name) LIKE ?
|
||||
ORDER BY name LIMIT 5
|
||||
`).all(uid, like));
|
||||
|
||||
const push_schedules = safeAll(() => db.prepare(`
|
||||
SELECT id, message, scheduled_at, sent FROM push_schedules
|
||||
WHERE user_id=? AND LOWER(message) LIKE ? AND sent=0
|
||||
ORDER BY scheduled_at LIMIT 5
|
||||
`).all(uid, like));
|
||||
|
||||
const calendar_feeds = safeAll(() => db.prepare(`
|
||||
SELECT id, name, url FROM calendar_feeds
|
||||
WHERE user_id=? AND (LOWER(name) LIKE ? OR LOWER(url) LIKE ?)
|
||||
ORDER BY name LIMIT 5
|
||||
`).all(uid, like, like));
|
||||
|
||||
const qr_codes = safeAll(() => db.prepare(`
|
||||
SELECT id, label, url FROM qr_codes
|
||||
WHERE user_id=? AND (LOWER(label) LIKE ? OR LOWER(url) LIKE ?)
|
||||
ORDER BY created_at DESC LIMIT 5
|
||||
`).all(uid, like, like));
|
||||
|
||||
res.json({ links, folders, snippets, calculations, orders, todos, files, file_folders, push_schedules, calendar_feeds, qr_codes });
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
Reference in New Issue
Block a user