Board: Eingabe-Fix (ItemRow außerhalb), Promote-Button Wunsch→Roadmap
This commit is contained in:
@@ -288,15 +288,20 @@ for (const [k, v] of loginDefaults) {
|
||||
if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='board_items'").get()) {
|
||||
db.exec(`
|
||||
CREATE TABLE board_items (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
type TEXT NOT NULL CHECK(type IN ('roadmap','wish')),
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
title TEXT NOT NULL,
|
||||
description TEXT NOT NULL DEFAULT '',
|
||||
created_at DATETIME DEFAULT NULL
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
type TEXT NOT NULL CHECK(type IN ('roadmap','wish')),
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
title TEXT NOT NULL,
|
||||
description TEXT NOT NULL DEFAULT '',
|
||||
promoted_from_wish INTEGER NOT NULL DEFAULT 0,
|
||||
created_at DATETIME DEFAULT NULL
|
||||
)
|
||||
`);
|
||||
}
|
||||
// Migration: promoted_from_wish Spalte
|
||||
const boardCols = db.prepare("PRAGMA table_info(board_items)").all().map(r => r.name);
|
||||
if (boardCols.length && !boardCols.includes('promoted_from_wish'))
|
||||
db.exec("ALTER TABLE board_items ADD COLUMN promoted_from_wish INTEGER NOT NULL DEFAULT 0");
|
||||
if (!db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='board_reads'").get()) {
|
||||
db.exec(`
|
||||
CREATE TABLE board_reads (
|
||||
|
||||
@@ -189,4 +189,18 @@ router.delete('/board/:id', authenticate, (req, res) => {
|
||||
res.json({ ok: true });
|
||||
});
|
||||
|
||||
// Wunsch zur Roadmap befördern (Admin only)
|
||||
router.post('/board/:id/promote', authenticate, (req, res) => {
|
||||
if (req.user.role !== 'admin') return res.status(403).json({ error: 'Kein Zugriff' });
|
||||
const item = db.prepare('SELECT * FROM board_items WHERE id=?').get(req.params.id);
|
||||
if (!item) return res.status(404).json({ error: 'Nicht gefunden' });
|
||||
if (item.type !== 'wish') return res.status(400).json({ error: 'Nur Wünsche können befördert werden' });
|
||||
db.prepare('UPDATE board_items SET type=?, promoted_from_wish=1 WHERE id=?').run('roadmap', item.id);
|
||||
const updated = db.prepare(`
|
||||
SELECT b.*, u.username as author FROM board_items b
|
||||
JOIN users u ON u.id=b.user_id WHERE b.id=?
|
||||
`).get(item.id);
|
||||
res.json(updated);
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
Reference in New Issue
Block a user