get sessions by projectId
This commit is contained in:
@@ -4,8 +4,13 @@ const BASE_URL = import.meta.env.VITE_ORCHESTRATION_URL ?? '';
|
||||
|
||||
// ── Sessions ────────────────────────────────────────────────
|
||||
|
||||
export async function fetchSessions(limit = API_DEFAULTS.SESSIONS_LIMIT, offset = API_DEFAULTS.OFFSET) {
|
||||
const res = await fetch(`${BASE_URL}/sessions?limit=${limit}&offset=${offset}`);
|
||||
export async function fetchSessions(limit = API_DEFAULTS.SESSIONS_LIMIT, offset = API_DEFAULTS.OFFSET, projectId = null) {
|
||||
const url = new URL(`${BASE_URL}/sessions`, window.location.origin);
|
||||
url.searchParams.set('limit', limit);
|
||||
url.searchParams.set('offset', offset);
|
||||
if (projectId) url.searchParams.set('projectId', projectId);
|
||||
|
||||
const res = await fetch(url.toString());
|
||||
if (!res.ok) throw new Error(`Failed to fetch sessions: ${res.status}`);
|
||||
return res.json();
|
||||
}
|
||||
|
||||
@@ -23,14 +23,25 @@ function getSession(id) {
|
||||
return parseRow(stmt.get(id));
|
||||
}
|
||||
|
||||
function getSessions(limit = EPISODIC.DEFAULT_PAGE_SIZE, offset = 0) {
|
||||
|
||||
function getSessions(limit = EPISODIC.DEFAULT_PAGE_SIZE, offset = 0, projectId = null) {
|
||||
const db = getDB();
|
||||
const stmt = db.prepare(`
|
||||
const stmt = projectId
|
||||
? db.prepare(`
|
||||
SELECT * FROM sessions
|
||||
WHERE project_id = ?
|
||||
ORDER BY updated_at DESC
|
||||
LIMIT ? OFFSET ?
|
||||
`)
|
||||
: db.prepare(`
|
||||
SELECT * FROM sessions
|
||||
ORDER BY updated_at DESC
|
||||
LIMIT ? OFFSET ?
|
||||
`);
|
||||
return stmt.all(limit, offset).map(parseRow);
|
||||
|
||||
return projectId
|
||||
? stmt.all(projectId, limit, offset).map(parseRow)
|
||||
: stmt.all(limit, offset).map(parseRow);
|
||||
}
|
||||
|
||||
// Retrieves a session by its external ID
|
||||
|
||||
@@ -44,8 +44,8 @@ app.post('/sessions', (req, res) => {
|
||||
});
|
||||
|
||||
app.get('/sessions', (req, res) => {
|
||||
const {limit = EPISODIC.DEFAULT_PAGE_SIZE, offset = EPISODIC.DEFAULT_OFFSET } = req.query;
|
||||
const sessions = episodic.getSessions(Number(limit), Number(offset));
|
||||
const {limit = EPISODIC.DEFAULT_PAGE_SIZE, offset = EPISODIC.DEFAULT_OFFSET, projectId } = req.query;
|
||||
const sessions = episodic.getSessions(Number(limit), Number(offset, projectId ?? null));
|
||||
res.json(sessions);
|
||||
})
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ router.get('/:sessionId/history', async (req, res) => {
|
||||
router.get('/', async (req, res) => {
|
||||
const { limit = EPISODIC.DEFAULT_PAGE_SIZE, offset = EPISODIC.DEFAULT_OFFSET } = req.query;
|
||||
try {
|
||||
const sessions = await memory.getSessions(Number(limit), Number(offset));
|
||||
const sessions = await memory.getSessions(Number(limit), Number(offset), projectId ?? null);
|
||||
res.json(sessions);
|
||||
} catch (err) {
|
||||
res.status(500).json({error: err.message});
|
||||
|
||||
@@ -55,10 +55,13 @@ async function getSessionHistory(sessionId, limit = EPISODIC.DEFAULT_SESSIONS_LI
|
||||
return res.json();
|
||||
}
|
||||
|
||||
async function getSessions(limit = EPISODIC.DEFAULT_SESSIONS_LIMIT, offset = EPISODIC.DEFAULT_OFFSET) {
|
||||
const res = await fetch(
|
||||
`${BASE_URL}/sessions?limit=${limit}&offset=${offset}`
|
||||
);
|
||||
async function getSessions(limit = EPISODIC.DEFAULT_SESSIONS_LIMIT, offset = EPISODIC.DEFAULT_OFFSET, projectId = null) {
|
||||
const url = new URL(`${BASE_URL}/sessions`);
|
||||
url.searchParams.set('limit', limit);
|
||||
url.searchParams.set('offset', offset);
|
||||
if (projectId) url.searchParams.set('projectId', projectId);
|
||||
|
||||
const res = await fetch(url.toString());
|
||||
if (!res.ok) throw new Error(`Failed to fetch sessions: ${res.status}`);
|
||||
return res.json();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user