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(`

Template not found

The selected template could not be loaded.

`); } const previewHtml = generatePreviewHtml( content || {}, design || {}, template.html_content, template.css_content ); res.send(previewHtml); } module.exports = { previewResume, previewFromData };