72 lines
1.9 KiB
JavaScript
72 lines
1.9 KiB
JavaScript
import { db } from './index.js';
|
|
|
|
const CREATE_TABLE_SQL = `
|
|
CREATE TABLE IF NOT EXISTS settings (
|
|
key TEXT PRIMARY KEY,
|
|
value TEXT,
|
|
updated_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
)
|
|
`;
|
|
|
|
db.prepare(CREATE_TABLE_SQL).run();
|
|
|
|
const getSettingStmt = db.prepare('SELECT key, value, updated_at FROM settings WHERE key = ?');
|
|
const setSettingStmt = db.prepare(`
|
|
INSERT INTO settings (key, value, updated_at)
|
|
VALUES (@key, @value, CURRENT_TIMESTAMP)
|
|
ON CONFLICT(key) DO UPDATE SET
|
|
value = excluded.value,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
`);
|
|
const deleteSettingStmt = db.prepare('DELETE FROM settings WHERE key = ?');
|
|
|
|
export function getSetting(key) {
|
|
try {
|
|
return getSettingStmt.get(key) || null;
|
|
} catch (err) {
|
|
console.error(`❌ [Settings] Fehler beim Lesen des Settings "${key}":`, err.message);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
export function setSetting(key, value) {
|
|
try {
|
|
setSettingStmt.run({ key, value });
|
|
return true;
|
|
} catch (err) {
|
|
console.error(`❌ [Settings] Fehler beim Speichern des Settings "${key}":`, err.message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
export function deleteSetting(key) {
|
|
try {
|
|
deleteSettingStmt.run(key);
|
|
return true;
|
|
} catch (err) {
|
|
console.error(`❌ [Settings] Fehler beim Löschen des Settings "${key}":`, err.message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
export function getJsonSetting(key, defaultValue = null) {
|
|
const row = getSetting(key);
|
|
if (!row || row.value === null || row.value === undefined) return defaultValue;
|
|
try {
|
|
return JSON.parse(row.value);
|
|
} catch (err) {
|
|
console.warn(`⚠️ [Settings] Konnte JSON für Setting "${key}" nicht parsen:`, err.message);
|
|
return defaultValue;
|
|
}
|
|
}
|
|
|
|
export function setJsonSetting(key, value) {
|
|
try {
|
|
const payload = value === undefined ? null : JSON.stringify(value);
|
|
return setSetting(key, payload);
|
|
} catch (err) {
|
|
console.error(`❌ [Settings] Fehler beim Serialisieren von Setting "${key}":`, err.message);
|
|
return false;
|
|
}
|
|
}
|