EventBuzz_Backend/src/utils/localMicrositeV2Templates.js

48 lines
1.4 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const { parseTemplateSchema } = require('./templateSchema');
const BACKEND_ROOT = path.join(__dirname, '..', '..');
function isLocalMicrositeV2TemplatesEnabled() {
const v = String(process.env.MICROSITE_V2_READ_FROM_LOCAL || '').trim().toLowerCase();
return v === '1' || v === 'true' || v === 'yes';
}
function getTemplatesRoot() {
const custom = String(process.env.MICROSITE_V2_TEMPLATES_DIR || '').trim();
if (custom) return path.resolve(custom);
return path.join(BACKEND_ROOT, 'microsite-v2-templates');
}
function resolveTemplateDir(slug) {
const normalized = String(slug || '').trim().toLowerCase();
if (!normalized) return null;
const dir = path.join(getTemplatesRoot(), normalized);
if (!fs.existsSync(dir)) return null;
return dir;
}
function readLocalTemplateSchema(slug) {
const dir = resolveTemplateDir(slug);
if (!dir) return null;
const jsonPath = path.join(dir, 'template.json');
if (!fs.existsSync(jsonPath)) return null;
return parseTemplateSchema(fs.readFileSync(jsonPath));
}
function readLocalTemplateHtml(slug) {
const dir = resolveTemplateDir(slug);
if (!dir) return null;
const htmlPath = path.join(dir, 'template.html');
if (!fs.existsSync(htmlPath)) return null;
return fs.readFileSync(htmlPath, 'utf8');
}
module.exports = {
isLocalMicrositeV2TemplatesEnabled,
getTemplatesRoot,
readLocalTemplateSchema,
readLocalTemplateHtml,
};