31 lines
No EOL
886 B
JavaScript
31 lines
No EOL
886 B
JavaScript
// memory/events.js
|
|
const { saveMemory, getMemory, listMemory } = require('./index');
|
|
|
|
function logEvent(db, type, data) {
|
|
const label = `event:${type}`;
|
|
|
|
getMemory(db, label, (err, existing) => {
|
|
const events = Array.isArray(existing) ? existing : [];
|
|
events.push({ ...data, timestamp: Date.now() });
|
|
|
|
const trimmed = events.slice(-50); // Keep last 50 events per type
|
|
saveMemory(db, label, trimmed);
|
|
});
|
|
}
|
|
|
|
function getRecentEvents(db, type, callback) {
|
|
const label = `event:${type}`;
|
|
getMemory(db, label, callback);
|
|
}
|
|
|
|
function listEventTypes(db, callback) {
|
|
listMemory(db, (err, entries) => {
|
|
if (err) return callback(err, []);
|
|
const types = entries
|
|
.filter(e => e.label.startsWith('event:'))
|
|
.map(e => e.label.replace('event:', ''));
|
|
callback(null, types);
|
|
});
|
|
}
|
|
|
|
module.exports = { logEvent, getRecentEvents, listEventTypes }; |