Spaces:
Runtime error
Runtime error
| ; | |
| var __importDefault = (this && this.__importDefault) || function (mod) { | |
| return (mod && mod.__esModule) ? mod : { "default": mod }; | |
| }; | |
| Object.defineProperty(exports, "__esModule", { value: true }); | |
| exports.getSubmissionReview = exports.analyzeCode = void 0; | |
| const client_1 = __importDefault(require("../../prisma/client")); | |
| const gemini_1 = require("../../utils/gemini"); | |
| const axios_1 = __importDefault(require("axios")); | |
| const analyzeCode = async (req, res) => { | |
| var _a; | |
| const userId = (_a = req.user) === null || _a === void 0 ? void 0 : _a.id; | |
| const { repoUrl, projectId } = req.body; | |
| try { | |
| // 1. Fetch code from GitHub (simplified: fetch README or a few files for demo) | |
| // In a real app, you'd use a GitHub App or User Token to clone or fetch via API | |
| const repoPath = repoUrl.replace("https://github.com/", ""); | |
| const [owner, repo] = repoPath.split("/"); | |
| // Fetch repo info as a placeholder for analysis | |
| const githubApiUrl = `https://api.github.com/repos/${owner}/${repo}`; | |
| const repoInfo = await axios_1.default.get(githubApiUrl); | |
| // 2. Automated analysis (simulated) | |
| const metrics = { | |
| complexity: "Medium", | |
| securityIssues: 0, | |
| lintErrors: 0 | |
| }; | |
| // 3. AI-powered feedback | |
| const prompt = `Please review this GitHub repository: ${repoUrl}. | |
| Owner: ${owner} | |
| Repo: ${repo} | |
| Description: ${repoInfo.data.description} | |
| Provide constructive feedback on the project structure and suggest improvements for a student.`; | |
| const feedback = await (0, gemini_1.getGeminiResponse)(prompt); | |
| // 4. Store review results | |
| const submission = await client_1.default.submission.create({ | |
| data: { | |
| userId, | |
| projectId, | |
| repoUrl, | |
| feedback, | |
| score: 85 // Simulated score | |
| } | |
| }); | |
| res.json({ success: true, data: submission }); | |
| } | |
| catch (error) { | |
| res.status(500).json({ success: false, message: error.message }); | |
| } | |
| }; | |
| exports.analyzeCode = analyzeCode; | |
| const getSubmissionReview = async (req, res) => { | |
| const { id } = req.params; | |
| try { | |
| const submission = await client_1.default.submission.findUnique({ | |
| where: { id }, | |
| include: { | |
| project: { select: { title: true } }, | |
| user: { select: { firstName: true, lastName: true } } | |
| } | |
| }); | |
| if (!submission) | |
| return res.status(404).json({ success: false, message: "Submission not found" }); | |
| res.json({ success: true, data: submission }); | |
| } | |
| catch (error) { | |
| res.status(500).json({ success: false, message: error.message }); | |
| } | |
| }; | |
| exports.getSubmissionReview = getSubmissionReview; | |