File size: 1,593 Bytes
1906404
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f2e0209
1906404
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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.' });
  }
}