const fs = require('fs'); const path = require('path'); const file = path.join(__dirname, '..', 'database.json'); if (!fs.existsSync(file)) { fs.writeFileSync(file, '{}'); } let cache = {}; try { cache = JSON.parse(fs.readFileSync(file, 'utf8')); } catch (e) { cache = {}; } function save() { fs.writeFileSync(file, JSON.stringify(cache, null, 2)); } module.exports = { get(key) { return cache[key] ?? null; }, set(key, value) { cache[key] = value; save(); return value; }, delete(key) { const existed = key in cache; delete cache[key]; save(); return existed; }, fetch(key) { return cache[key] ?? null; }, add(key, num) { cache[key] = (cache[key] || 0) + num; save(); return cache[key]; }, subtract(key, num) { cache[key] = (cache[key] || 0) - num; save(); return cache[key]; }, push(key, value) { if (!Array.isArray(cache[key])) cache[key] = []; cache[key].push(value); save(); return cache[key]; }, has(key) { return key in cache; }, all() { return Object.entries(cache).map(([ID, data]) => ({ ID, data })); } };