Add CSB version support to backend API endpoints and search functionality

This commit is contained in:
Ryderjj89
2025-09-29 09:44:29 -04:00
parent 2bb34ccd49
commit 968187ab8c

View File

@@ -39,11 +39,13 @@ app.use('/logos', express.static(path.join(__dirname, '../../frontend/logos')));
const ESV_DATA_DIR = path.join(__dirname, '../../ESV'); // ESV local files const ESV_DATA_DIR = path.join(__dirname, '../../ESV'); // ESV local files
const NKJV_DATA_DIR = path.join(__dirname, '../../NKJV'); // NKJV local files const NKJV_DATA_DIR = path.join(__dirname, '../../NKJV'); // NKJV local files
const NLT_DATA_DIR = path.join(__dirname, '../../NLT'); // NLT local files const NLT_DATA_DIR = path.join(__dirname, '../../NLT'); // NLT local files
const CSB_DATA_DIR = path.join(__dirname, '../../CSB'); // CSB local files
// Initialize search engines for each version // Initialize search engines for each version
let esvSearchEngine = null; let esvSearchEngine = null;
let nkjvSearchEngine = null; let nkjvSearchEngine = null;
let nltSearchEngine = null; let nltSearchEngine = null;
let csbSearchEngine = null;
try { try {
if (ESV_DATA_DIR) { if (ESV_DATA_DIR) {
@@ -65,11 +67,18 @@ try {
console.log('NLT search engine failed to initialize:', error.message); console.log('NLT search engine failed to initialize:', error.message);
} }
try {
csbSearchEngine = new BibleSearchEngine(CSB_DATA_DIR);
} catch (error) {
console.log('CSB search engine failed to initialize:', error.message);
}
// Helper function to get data directory for version // Helper function to get data directory for version
function getDataDir(version) { function getDataDir(version) {
if (version === 'esv' && esvSearchEngine) return ESV_DATA_DIR; if (version === 'esv' && esvSearchEngine) return ESV_DATA_DIR;
if (version === 'nkjv') return NKJV_DATA_DIR; if (version === 'nkjv') return NKJV_DATA_DIR;
if (version === 'nlt' && nltSearchEngine) return NLT_DATA_DIR; if (version === 'nlt' && nltSearchEngine) return NLT_DATA_DIR;
if (version === 'csb' && csbSearchEngine) return CSB_DATA_DIR;
return esvSearchEngine ? ESV_DATA_DIR : NKJV_DATA_DIR; // default to available version return esvSearchEngine ? ESV_DATA_DIR : NKJV_DATA_DIR; // default to available version
} }
@@ -134,6 +143,7 @@ app.get('/versions', (req, res) => {
if (esvSearchEngine) availableVersions.push({ id: 'esv', name: 'ESV - English Standard Version' }); if (esvSearchEngine) availableVersions.push({ id: 'esv', name: 'ESV - English Standard Version' });
availableVersions.push({ id: 'nkjv', name: 'NKJV - New King James Version' }); availableVersions.push({ id: 'nkjv', name: 'NKJV - New King James Version' });
if (nltSearchEngine) availableVersions.push({ id: 'nlt', name: 'NLT - New Living Translation' }); if (nltSearchEngine) availableVersions.push({ id: 'nlt', name: 'NLT - New Living Translation' });
if (csbSearchEngine) availableVersions.push({ id: 'csb', name: 'CSB - Christian Standard Bible' });
res.json({ versions: availableVersions }); res.json({ versions: availableVersions });
}); });
@@ -221,6 +231,8 @@ app.get('/api/search', async (req, res) => {
searchEngine = esvSearchEngine; searchEngine = esvSearchEngine;
} else if (version === 'nlt' && nltSearchEngine) { } else if (version === 'nlt' && nltSearchEngine) {
searchEngine = nltSearchEngine; searchEngine = nltSearchEngine;
} else if (version === 'csb' && csbSearchEngine) {
searchEngine = csbSearchEngine;
} else { } else {
searchEngine = nkjvSearchEngine; // default fallback searchEngine = nkjvSearchEngine; // default fallback
} }
@@ -261,6 +273,8 @@ app.get('/api/search/suggestions', async (req, res) => {
searchEngine = esvSearchEngine; searchEngine = esvSearchEngine;
} else if (version === 'nlt' && nltSearchEngine) { } else if (version === 'nlt' && nltSearchEngine) {
searchEngine = nltSearchEngine; searchEngine = nltSearchEngine;
} else if (version === 'csb' && csbSearchEngine) {
searchEngine = csbSearchEngine;
} else { } else {
searchEngine = nkjvSearchEngine; // default fallback searchEngine = nkjvSearchEngine; // default fallback
} }
@@ -397,4 +411,10 @@ app.listen(PORT, () => {
console.log(`ESV data not available - mdbible not found`); console.log(`ESV data not available - mdbible not found`);
} }
console.log(`NKJV data directory: ${NKJV_DATA_DIR}`); console.log(`NKJV data directory: ${NKJV_DATA_DIR}`);
if (nltSearchEngine) {
console.log(`NLT data directory: ${NLT_DATA_DIR}`);
}
if (csbSearchEngine) {
console.log(`CSB data directory: ${CSB_DATA_DIR}`);
}
}); });