Add filtering to sessionID for workspace chats (#2531)

This commit is contained in:
Timothy Carambat 2024-10-24 15:10:50 -07:00 committed by GitHub
parent c3a7a35346
commit 72ba9f7f28
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 47 additions and 1 deletions

View File

@ -339,6 +339,12 @@ function apiWorkspaceEndpoints(app) {
required: true,
type: 'string'
}
#swagger.parameters['apiSessionId'] = {
in: 'query',
description: 'Optional apiSessionId to filter by',
required: false,
type: 'string'
}
#swagger.responses[200] = {
content: {
"application/json": {
@ -370,6 +376,7 @@ function apiWorkspaceEndpoints(app) {
*/
try {
const { slug } = request.params;
const { apiSessionId = null } = request.query;
const workspace = await Workspace.get({ slug });
if (!workspace) {
@ -377,7 +384,12 @@ function apiWorkspaceEndpoints(app) {
return;
}
const history = await WorkspaceChats.forWorkspace(workspace.id);
const history = apiSessionId
? await WorkspaceChats.forWorkspaceByApiSessionId(
workspace.id,
apiSessionId
)
: await WorkspaceChats.forWorkspace(workspace.id);
response.status(200).json({ history: convertToChatHistory(history) });
} catch (e) {
console.error(e.message, e);

View File

@ -55,6 +55,31 @@ const WorkspaceChats = {
}
},
forWorkspaceByApiSessionId: async function (
workspaceId = null,
apiSessionId = null,
limit = null,
orderBy = null
) {
if (!workspaceId || !apiSessionId) return [];
try {
const chats = await prisma.workspace_chats.findMany({
where: {
workspaceId,
user_id: null,
api_session_id: String(apiSessionId),
thread_id: null,
},
...(limit !== null ? { take: limit } : {}),
...(orderBy !== null ? { orderBy } : { orderBy: { id: "asc" } }),
});
return chats;
} catch (error) {
console.error(error.message);
return [];
}
},
forWorkspace: async function (
workspaceId = null,
limit = null,

View File

@ -1649,6 +1649,15 @@
"type": "string"
},
"description": "Unique slug of workspace to find"
},
{
"name": "apiSessionId",
"in": "query",
"description": "Optional apiSessionId to filter by",
"required": false,
"schema": {
"type": "string"
}
}
],
"responses": {