refactoring and clean up
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
const {getDB} = require('../db');
|
||||
const { EPISODIC, getEnv, SERVICES } = require('@nexusai/shared');
|
||||
const { EPISODIC, getEnv, SERVICES, parseRow, formatEpisodeText } = require('@nexusai/shared');
|
||||
const semantic = require('../semantic');
|
||||
|
||||
// --Sessions --------------------------------------------------
|
||||
@@ -20,7 +20,7 @@ function createSession(externalId, metadata = null) {
|
||||
function getSession(id) {
|
||||
const db = getDB();
|
||||
const stmt = db.prepare(`SELECT * FROM sessions WHERE id = ?`);
|
||||
return parseSession(stmt.get(id));
|
||||
return parseRow(stmt.get(id));
|
||||
}
|
||||
|
||||
function getSessions(limit = EPISODIC.DEFAULT_PAGE_SIZE, offset = 0) {
|
||||
@@ -30,14 +30,14 @@ function getSessions(limit = EPISODIC.DEFAULT_PAGE_SIZE, offset = 0) {
|
||||
ORDER BY updated_at DESC
|
||||
LIMIT ? OFFSET ?
|
||||
`);
|
||||
return stmt.all(limit, offset).map(parseSession);
|
||||
return stmt.all(limit, offset).map(parseRow);
|
||||
}
|
||||
|
||||
// Retrieves a session by its external ID
|
||||
function getSessionByExternalId(externalId) {
|
||||
const db = getDB();
|
||||
const stmt = db.prepare(`SELECT * FROM sessions WHERE external_id = ?`);
|
||||
return parseSession(stmt.get(externalId));
|
||||
return parseRow(stmt.get(externalId));
|
||||
}
|
||||
|
||||
// Updates the updated_at timestamp of a session to the current time
|
||||
@@ -103,7 +103,7 @@ function getEpisodesBySession(sessionId, limit = EPISODIC.DEFAULT_PAGE_SIZE, off
|
||||
ORDER BY created_at DESC
|
||||
LIMIT ? OFFSET ?
|
||||
`);
|
||||
return stmt.all(sessionId, limit, offset).map(parseEpisode);
|
||||
return stmt.all(sessionId, limit, offset).map(parseRow);
|
||||
}
|
||||
|
||||
// Retrieves recent episodes across all sessions, ordered by creation time descending, with a limit
|
||||
@@ -115,7 +115,7 @@ function getRecentEpisodes(limit = EPISODIC.DEFAULT_RECENT_LIMIT) {
|
||||
ORDER BY created_at DESC
|
||||
LIMIT ?
|
||||
`);
|
||||
return stmt.all(limit).map(parseEpisode);
|
||||
return stmt.all(limit).map(parseRow);
|
||||
}
|
||||
|
||||
|
||||
@@ -130,7 +130,7 @@ function searchEpisodes(query, limit = EPISODIC.DEFAULT_SEARCH_LIMIT) {
|
||||
ORDER BY rank
|
||||
LIMIT ?
|
||||
`);
|
||||
return stmt.all(query, limit).map(parseEpisode);
|
||||
return stmt.all(query, limit).map(parseRow);
|
||||
}
|
||||
|
||||
// Deletes an episode by its ID
|
||||
@@ -139,32 +139,12 @@ function deleteEpisode(id) {
|
||||
db.prepare(`DELETE FROM episodes WHERE id = ?`).run(id);
|
||||
}
|
||||
|
||||
// ─── Parsers ──────────────────────────────────────────────────────────────────
|
||||
|
||||
// Parse JSON metadata back out on the way up — stored as string, returned as object
|
||||
function parseSession(row) {
|
||||
if (!row) return null;
|
||||
return {
|
||||
...row,
|
||||
metadata: row.metadata ? JSON.parse(row.metadata) : null
|
||||
};
|
||||
}
|
||||
|
||||
// Parse JSON metadata back out on the way up — stored as string, returned as object
|
||||
function parseEpisode(row) {
|
||||
if (!row) return null;
|
||||
return {
|
||||
...row,
|
||||
metadata: row.metadata ? JSON.parse(row.metadata) : null
|
||||
};
|
||||
}
|
||||
|
||||
/******** Embedding Helper ********/
|
||||
async function getEpisodeEmbedding(userMessage, aiResponse){
|
||||
const url = getEnv('EMBEDDING_SERVICE_URL', SERVICES.EMBEDDING_URL);
|
||||
|
||||
//Combine user message and AI response for embedding
|
||||
const text = `User: ${userMessage}\nAssistant: ${aiResponse}`;
|
||||
const text = formatEpisodeText(userMessage, aiResponse);
|
||||
|
||||
const res = await fetch(`${url}/embed`, {
|
||||
method: 'POST',
|
||||
|
||||
Reference in New Issue
Block a user