const { getDb } = require('../config/database');
const { generatePreviewHtml } = require('../services/previewService');
const logger = require('../config/logger');
/**
* GET /api/export/:resumeId/preview
* Renders an HTML preview by reading from the database.
*/
async function previewResume(req, res) {
const { resumeId } = req.params;
const db = await getDb();
const resume = await db.get(
`SELECT r.*, t.html_content, t.css_content
FROM resumes r
LEFT JOIN templates t ON r.template_id = t.id
WHERE r.id = ?`,
resumeId
);
if (!resume) return res.status(404).send('Resume not found');
if (!resume.html_content) {
return res.send(`
No Template Selected
Please select a template in the design sidebar to preview your resume.
`);
}
const content = JSON.parse(resume.content || '{}');
const design = JSON.parse(resume.design || '{}');
const previewHtml = generatePreviewHtml(content, design, resume.html_content, resume.css_content);
res.send(previewHtml);
}
/**
* POST /api/export/preview
* Renders a live preview directly from posted content+design+templateId.
* DOES NOT read from or write to the database (except to fetch template HTML/CSS).
* Body: { content, design, templateId }
*/
async function previewFromData(req, res) {
const { content, design, templateId } = req.body;
if (!templateId) {
return res.status(400).json({ success: false, message: 'templateId is required' });
}
const db = await getDb();
const template = await db.get(
'SELECT html_content, css_content FROM templates WHERE id = ?',
templateId
);
if (!template || !template.html_content) {
return res.send(`