Initial commit: IT Nexus Web-App
This commit is contained in:
55
backend/src/controllers/knowledge.controller.js
Normal file
55
backend/src/controllers/knowledge.controller.js
Normal file
@@ -0,0 +1,55 @@
|
||||
const { getDatabase } = require('../config/database');
|
||||
|
||||
const getAll = (req, res) => {
|
||||
const db = getDatabase();
|
||||
const entries = db.prepare(`
|
||||
SELECT k.*, u.username as author_name
|
||||
FROM ai_knowledge k
|
||||
LEFT JOIN users u ON u.id = k.created_by
|
||||
ORDER BY k.category ASC, k.updated_at DESC
|
||||
`).all();
|
||||
res.json(entries);
|
||||
};
|
||||
|
||||
const getByCategory = (req, res) => {
|
||||
const db = getDatabase();
|
||||
const entries = db.prepare(`
|
||||
SELECT k.*, u.username as author_name
|
||||
FROM ai_knowledge k
|
||||
LEFT JOIN users u ON u.id = k.created_by
|
||||
WHERE k.category = ?
|
||||
ORDER BY k.updated_at DESC
|
||||
`).all(req.params.category);
|
||||
res.json(entries);
|
||||
};
|
||||
|
||||
const create = (req, res) => {
|
||||
const { title, content, category, tags } = req.body;
|
||||
if (!title?.trim() || !content?.trim()) return res.status(400).json({ error: 'Titel und Inhalt erforderlich' });
|
||||
const db = getDatabase();
|
||||
const result = db.prepare(`
|
||||
INSERT INTO ai_knowledge (title, content, category, tags, created_by)
|
||||
VALUES (?, ?, ?, ?, ?)
|
||||
`).run(title.trim(), content.trim(), category || 'Allgemein', JSON.stringify(tags || []), req.user?.id || null);
|
||||
res.status(201).json(db.prepare('SELECT * FROM ai_knowledge WHERE id=?').get(result.lastInsertRowid));
|
||||
};
|
||||
|
||||
const update = (req, res) => {
|
||||
const db = getDatabase();
|
||||
const existing = db.prepare('SELECT * FROM ai_knowledge WHERE id=?').get(req.params.id);
|
||||
if (!existing) return res.status(404).json({ error: 'Nicht gefunden' });
|
||||
const { title, content, category, tags } = req.body;
|
||||
db.prepare(`UPDATE ai_knowledge SET title=?, content=?, category=?, tags=?, updated_at=CURRENT_TIMESTAMP WHERE id=?`)
|
||||
.run(title ?? existing.title, content ?? existing.content, category ?? existing.category,
|
||||
tags !== undefined ? JSON.stringify(tags) : existing.tags, req.params.id);
|
||||
res.json(db.prepare('SELECT * FROM ai_knowledge WHERE id=?').get(req.params.id));
|
||||
};
|
||||
|
||||
const remove = (req, res) => {
|
||||
const db = getDatabase();
|
||||
if (!db.prepare('SELECT id FROM ai_knowledge WHERE id=?').get(req.params.id)) return res.status(404).json({ error: 'Nicht gefunden' });
|
||||
db.prepare('DELETE FROM ai_knowledge WHERE id=?').run(req.params.id);
|
||||
res.json({ success: true });
|
||||
};
|
||||
|
||||
module.exports = { getAll, getByCategory, create, update, remove };
|
||||
Reference in New Issue
Block a user