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