chat-dev / server /dataPaths.js
incognitolm
mig
a7c1d87
import fs from 'fs';
import path from 'path';
export const DATA_ROOT = process.env.DATA_ROOT || '/data';
export const POSTGRES_STORAGE_DIR_NAME = 'postgresql-store';
export const POSTGRES_STORAGE_DIR = path.join(DATA_ROOT, POSTGRES_STORAGE_DIR_NAME);
export const POSTGRES_STORAGE_DB_DIR_NAME = 'db';
export const POSTGRES_STORAGE_DB_DIR = path.join(POSTGRES_STORAGE_DIR, POSTGRES_STORAGE_DB_DIR_NAME);
export const POSTGRES_STORAGE_MANIFEST = path.join(POSTGRES_STORAGE_DIR, 'manifest.json');
export function readPostgresStorageManifest() {
try {
const raw = fs.readFileSync(POSTGRES_STORAGE_MANIFEST, 'utf8');
const parsed = JSON.parse(raw);
return parsed && typeof parsed === 'object' ? parsed : null;
} catch {
return null;
}
}
export function hasEmbeddedPostgresDatabaseFiles() {
try {
return fs.existsSync(POSTGRES_STORAGE_DB_DIR) && fs.readdirSync(POSTGRES_STORAGE_DB_DIR).length > 0;
} catch {
return false;
}
}
function detectStorageMode() {
return readPostgresStorageManifest() ? 'postgres' : 'legacy';
}
export let STORAGE_MODE = detectStorageMode();
export function refreshStorageMode() {
STORAGE_MODE = detectStorageMode();
return STORAGE_MODE;
}
export function setStorageMode(mode) {
STORAGE_MODE = mode === 'postgres' ? 'postgres' : 'legacy';
return STORAGE_MODE;
}
export function getStorageMode() {
return STORAGE_MODE;
}
export function isPostgresStorageMode() {
return STORAGE_MODE === 'postgres';
}