Files
IT-Nexus/backend/src/controllers/knowledge.controller.js

56 lines
2.3 KiB
JavaScript

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 };