diff --git a/server/models/documents.js b/server/models/documents.js index 148ae8c4ecf9f908791b5c96ccb25699ad094f83..9e98ab60b984b96cc627b8e63979c5c40954a14e 100644 --- a/server/models/documents.js +++ b/server/models/documents.js @@ -19,7 +19,9 @@ const Document = { const { open } = require("sqlite"); const db = await open({ - filename: "anythingllm.db", + filename: `${ + !!process.env.STORAGE_DIR ? `${process.env.STORAGE_DIR}/` : "" + }anythingllm.db`, driver: sqlite3.Database, }); diff --git a/server/models/vectors.js b/server/models/vectors.js index d3ad9cc878d6e12aeceb7e86beb5f0f05b209666..6531ac4f71a18e787064033c6da30f0861d0e6e1 100644 --- a/server/models/vectors.js +++ b/server/models/vectors.js @@ -17,7 +17,9 @@ const DocumentVectors = { const { open } = require("sqlite"); const db = await open({ - filename: "anythingllm.db", + filename: `${ + !!process.env.STORAGE_DIR ? `${process.env.STORAGE_DIR}/` : "" + }anythingllm.db`, driver: sqlite3.Database, }); diff --git a/server/models/workspace.js b/server/models/workspace.js index ddb8faa93d3e468e727ba11b3ac1972bc4d385ee..8c6c212551485262647af085ffee1c9c965cbeaf 100644 --- a/server/models/workspace.js +++ b/server/models/workspace.js @@ -16,7 +16,9 @@ const Workspace = { const { open } = require("sqlite"); const db = await open({ - filename: "anythingllm.db", + filename: `${ + !!process.env.STORAGE_DIR ? `${process.env.STORAGE_DIR}/` : "" + }anythingllm.db`, driver: sqlite3.Database, }); diff --git a/server/models/workspaceChats.js b/server/models/workspaceChats.js index 8a545b15c1914796635b63a391cb013059dab3ce..22763527c31f6eb14c6c0d6492662f2fad2689d5 100644 --- a/server/models/workspaceChats.js +++ b/server/models/workspaceChats.js @@ -14,7 +14,9 @@ const WorkspaceChats = { const { open } = require("sqlite"); const db = await open({ - filename: "anythingllm.db", + filename: `${ + !!process.env.STORAGE_DIR ? `${process.env.STORAGE_DIR}/` : "" + }anythingllm.db`, driver: sqlite3.Database, }); diff --git a/server/utils/files/index.js b/server/utils/files/index.js index 21021f004a3885f0bc2a7168d2e9e5b148361249..978f785fdd50b1fc0d1ba95e5af0b3639eed421f 100644 --- a/server/utils/files/index.js +++ b/server/utils/files/index.js @@ -4,7 +4,11 @@ const { v5: uuidv5 } = require("uuid"); async function collectDocumentData(folderName = null) { if (!folderName) throw new Error("No docPath provided in request"); - const folder = path.resolve(__dirname, `../../documents/${folderName}`); + const folder = + process.env.NODE_ENV === "development" + ? path.resolve(__dirname, `../../documents/${folderName}`) + : path.resolve(process.env.STORAGE_DIR, `documents/${folderName}`); + const dirExists = fs.existsSync(folder); if (!dirExists) throw new Error( @@ -28,7 +32,11 @@ async function collectDocumentData(folderName = null) { // eg: youtube-subject/video-123.json async function fileData(filePath = null) { if (!filePath) throw new Error("No docPath provided in request"); - const fullPath = path.resolve(__dirname, `../../documents/${filePath}`); + + const fullPath = + process.env.NODE_ENV === "development" + ? path.resolve(__dirname, `../../documents/${filePath}`) + : path.resolve(process.env.STORAGE_DIR, `documents/${filePath}`); const fileExists = fs.existsSync(fullPath); if (!fileExists) return null; @@ -37,9 +45,12 @@ async function fileData(filePath = null) { } async function viewLocalFiles() { - const folder = path.resolve(__dirname, `../../documents`); + const folder = + process.env.NODE_ENV === "development" + ? path.resolve(__dirname, `../../documents`) + : path.resolve(process.env.STORAGE_DIR, `documents`); const dirExists = fs.existsSync(folder); - if (!dirExists) return {}; + if (!dirExists) fs.mkdirSync(folder); const directory = { name: "documents", @@ -49,7 +60,12 @@ async function viewLocalFiles() { for (const file of fs.readdirSync(folder)) { if (path.extname(file) === ".md") continue; - const folderPath = path.resolve(__dirname, `../../documents/${file}`); + + const folderPath = + process.env.NODE_ENV === "development" + ? path.resolve(__dirname, `../../documents/${file}`) + : path.resolve(process.env.STORAGE_DIR, `documents/${file}`); + const isFolder = fs.lstatSync(folderPath).isDirectory(); if (isFolder) { const subdocs = { @@ -88,7 +104,10 @@ async function cachedVectorInformation(filename = null, checkOnly = false) { if (!filename) return checkOnly ? false : { exists: false, chunks: [] }; const digest = uuidv5(filename, uuidv5.URL); - const file = path.resolve(__dirname, `../../vector-cache/${digest}.json`); + const file = + process.env.NODE_ENV === "development" + ? path.resolve(__dirname, `../../vector-cache/${digest}.json`) + : path.resolve(process.env.STORAGE_DIR, `vector-cache/${digest}.json`); const exists = fs.existsSync(file); if (checkOnly) return exists; @@ -109,7 +128,10 @@ async function storeVectorResult(vectorData = [], filename = null) { console.log( `Caching vectorized results of ${filename} to prevent duplicated embedding.` ); - const folder = path.resolve(__dirname, `../../vector-cache`); + const folder = + process.env.NODE_ENV === "development" + ? path.resolve(__dirname, `../../vector-cache`) + : path.resolve(process.env.STORAGE_DIR, `vector-cache`); if (!fs.existsSync(folder)) fs.mkdirSync(folder);