Spaces:
Sleeping
Sleeping
| import { generateResume } from '../services/aiService.js'; | |
| import { saveResume, getLatestResume } from '../services/firebaseService.js'; | |
| /** | |
| * POST /api/resume/generate | |
| * Body: { github, linkedin, codolio, email, jobDesc, repos } | |
| */ | |
| export async function generateResumeHandler(req, res) { | |
| try { | |
| const { github, linkedin, codolio, email, jobDesc, repos } = req.body; | |
| if (!github || !linkedin || !jobDesc) { | |
| return res.status(400).json({ error: 'GitHub, LinkedIn, and job description are required.' }); | |
| } | |
| const startTime = Date.now(); | |
| const latexContent = await generateResume({ github, linkedin, codolio, email, jobDesc, repos }); | |
| const timeTakenMs = Date.now() - startTime; | |
| // Save to Firestore | |
| const resumeId = await saveResume(req.user.uid, { | |
| content: latexContent, | |
| github, | |
| linkedin, | |
| }); | |
| res.json({ | |
| resumeId, | |
| latex: latexContent, | |
| timeTakenMs, | |
| }); | |
| } catch (error) { | |
| console.error('Resume generation error:', error); | |
| res.status(500).json({ error: 'Failed to generate resume.', details: error.message }); | |
| } | |
| } | |
| /** | |
| * GET /api/resume | |
| * Returns the latest generated resume for the authenticated user. | |
| */ | |
| export async function getResume(req, res) { | |
| try { | |
| const resume = await getLatestResume(req.user.uid); | |
| if (!resume) { | |
| return res.status(404).json({ error: 'No resume found. Generate one first.' }); | |
| } | |
| res.json({ resume }); | |
| } catch (error) { | |
| console.error('Get resume error:', error); | |
| res.status(500).json({ error: 'Failed to fetch resume.' }); | |
| } | |
| } | |