56 lines
2.3 KiB
JavaScript
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 };
|