54 lines
No EOL
1.2 KiB
JavaScript
54 lines
No EOL
1.2 KiB
JavaScript
// memory/index.js
|
|
const db = require('../db');
|
|
|
|
function saveMemory(db, label, data, callback = () => {}) {
|
|
db.run(
|
|
`INSERT OR REPLACE INTO memory (label, data) VALUES (?, ?)`,
|
|
[label, JSON.stringify(data)],
|
|
callback
|
|
);
|
|
}
|
|
|
|
function getMemory(db, label, callback) {
|
|
db.get(
|
|
`SELECT data FROM memory WHERE label = ?`,
|
|
[label],
|
|
(err, row) => {
|
|
if (err) return callback(err, null);
|
|
if (!row) return callback(null, null);
|
|
try {
|
|
callback(null, JSON.parse(row.data));
|
|
} catch (e) {
|
|
callback(e, null);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
function forgetMemory(db, label, callback = () => {}) {
|
|
db.run(`DELETE FROM memory WHERE label = ?`, [label], callback);
|
|
}
|
|
|
|
function listMemory(db, callback) {
|
|
db.all(`SELECT label, data FROM memory`, [], (err, rows) => {
|
|
if (err) return callback(err, null);
|
|
const parsed = rows.map(row => ({
|
|
label: row.label,
|
|
data: (() => {
|
|
try {
|
|
return JSON.parse(row.data);
|
|
} catch {
|
|
return row.data;
|
|
}
|
|
})()
|
|
}));
|
|
callback(null, parsed);
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
saveMemory,
|
|
getMemory,
|
|
forgetMemory,
|
|
listMemory
|
|
}; |