|
|
const User = require('../models/User'); |
|
|
const ErrorResponse = require('../utils/errorResponse'); |
|
|
const asyncHandler = require('../utils/asyncHandler'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exports.updatePreferences = asyncHandler(async (req, res, next) => { |
|
|
const { |
|
|
theme, preferredModel, temperature, techStack, |
|
|
cotMode, reasoningBudget, selfCritique, multiAgentMode, |
|
|
confidenceLevel, hallucinationGuard, debugMode |
|
|
} = req.body; |
|
|
|
|
|
const user = req.user; |
|
|
|
|
|
|
|
|
if (!user.preferences) user.preferences = {}; |
|
|
|
|
|
|
|
|
if (theme) user.preferences.theme = theme; |
|
|
if (preferredModel) user.preferences.preferredModel = preferredModel; |
|
|
if (temperature !== undefined) user.preferences.temperature = temperature; |
|
|
if (techStack) user.preferences.techStack = techStack; |
|
|
|
|
|
|
|
|
if (cotMode) user.preferences.cotMode = cotMode; |
|
|
if (reasoningBudget !== undefined) user.preferences.reasoningBudget = reasoningBudget; |
|
|
if (selfCritique !== undefined) user.preferences.selfCritique = selfCritique; |
|
|
if (multiAgentMode) user.preferences.multiAgentMode = multiAgentMode; |
|
|
if (confidenceLevel) user.preferences.confidenceLevel = confidenceLevel; |
|
|
if (hallucinationGuard) user.preferences.hallucinationGuard = hallucinationGuard; |
|
|
if (debugMode !== undefined) user.preferences.debugMode = debugMode; |
|
|
|
|
|
|
|
|
await user.save(); |
|
|
|
|
|
res.status(200).json({ |
|
|
success: true, |
|
|
data: user.preferences |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exports.getProfile = asyncHandler(async (req, res, next) => { |
|
|
const user = req.user; |
|
|
|
|
|
const profile = { |
|
|
name: user.name, |
|
|
role: user.role, |
|
|
isOwner: user.role === 'owner' || user.email === 'johanvoncd7@gmail.com', |
|
|
preferences: user.preferences, |
|
|
usage: { |
|
|
requestsToday: user.usage.requestsToday, |
|
|
limit: 75 |
|
|
} |
|
|
}; |
|
|
|
|
|
res.status(200).json({ |
|
|
success: true, |
|
|
data: profile |
|
|
}); |
|
|
}); |
|
|
|