mirror of
https://github.com/Mintplex-Labs/anything-llm
synced 2026-04-25 17:15:37 +02:00
inital commit ⚡
This commit is contained in:
75
server/endpoints/workspaces.js
Normal file
75
server/endpoints/workspaces.js
Normal file
@@ -0,0 +1,75 @@
|
||||
const { Pinecone } = require('../utils/pinecone');
|
||||
const { reqBody } = require('../utils/http');
|
||||
const { Workspace } = require('../models/workspace');
|
||||
const { Document } = require('../models/documents');
|
||||
const { DocumentVectors } = require('../models/vectors');
|
||||
const { WorkspaceChats } = require('../models/workspaceChats');
|
||||
const { convertToChatHistory } = require('../utils/chats');
|
||||
|
||||
function workspaceEndpoints(app) {
|
||||
if (!app) return;
|
||||
|
||||
app.post('/workspace/new', async (request, response) => {
|
||||
const { name = null } = reqBody(request);
|
||||
const { workspace, message } = await Workspace.new(name);
|
||||
response.status(200).json({ workspace, message })
|
||||
})
|
||||
|
||||
app.post('/workspace/:slug/update-embeddings', async (request, response) => {
|
||||
const { slug = null } = request.params;
|
||||
const { adds = [], deletes = [] } = reqBody(request);
|
||||
const currWorkspace = await Workspace.get(`slug = '${slug}'`);
|
||||
|
||||
if (!currWorkspace) {
|
||||
response.sendStatus(400).end();
|
||||
return;
|
||||
}
|
||||
|
||||
await Document.removeDocuments(currWorkspace, deletes);
|
||||
await Document.addDocuments(currWorkspace, adds);
|
||||
const updatedWorkspace = await Workspace.get(`slug = '${slug}'`);
|
||||
response.status(200).json({ workspace: updatedWorkspace })
|
||||
})
|
||||
|
||||
app.delete('/workspace/:slug', async (request, response) => {
|
||||
const { slug = '' } = request.params
|
||||
const workspace = await Workspace.get(`slug = '${slug}'`);
|
||||
|
||||
if (!workspace) {
|
||||
response.sendStatus(400).end();
|
||||
return;
|
||||
}
|
||||
|
||||
await Workspace.delete(`slug = '${slug.toLowerCase()}'`);
|
||||
await DocumentVectors.deleteForWorkspace(workspace.id);
|
||||
await Document.delete(`workspaceId = ${Number(workspace.id)}`)
|
||||
await WorkspaceChats.delete(`workspaceId = ${Number(workspace.id)}`)
|
||||
try { await Pinecone['delete-namespace']({ namespace: slug }) } catch (e) { console.error(e.message) }
|
||||
response.sendStatus(200).end()
|
||||
})
|
||||
|
||||
app.get('/workspaces', async (_, response) => {
|
||||
const workspaces = await Workspace.where();
|
||||
response.status(200).json({ workspaces })
|
||||
})
|
||||
|
||||
app.get('/workspace/:slug', async (request, response) => {
|
||||
const { slug } = request.params
|
||||
const workspace = await Workspace.get(`slug = '${slug}'`);
|
||||
response.status(200).json({ workspace })
|
||||
})
|
||||
|
||||
app.get('/workspace/:slug/chats', async (request, response) => {
|
||||
const { slug } = request.params
|
||||
const workspace = await Workspace.get(`slug = '${slug}'`);
|
||||
if (!workspace) {
|
||||
response.sendStatus(400).end()
|
||||
return;
|
||||
}
|
||||
|
||||
const history = await WorkspaceChats.forWorkspace(workspace.id)
|
||||
response.status(200).json({ history: convertToChatHistory(history) })
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = { workspaceEndpoints }
|
||||
Reference in New Issue
Block a user