Files
yourpart3/backend/controllers/minigamesController.js

33 lines
1.1 KiB
JavaScript

import MinigamesService from '../services/minigamesService.js';
function extractHashedUserId(req) {
return req.headers?.userid;
}
class MinigamesController {
constructor() {
this.service = MinigamesService;
this.listCampaigns = this._wrap((userId, req) => this.service.listCampaigns());
this.getCampaign = this._wrap((userId, req) => this.service.getCampaign(req.params.code));
this.getProgress = this._wrap((userId, req) => this.service.getProgress(userId, req.params.code));
this.saveProgress = this._wrap((userId, req) => this.service.saveProgress(userId, req.params.code, req.body));
}
_wrap(fn, { successStatus = 200 } = {}) {
return async (req, res) => {
try {
const userId = extractHashedUserId(req);
if (!userId) return res.status(400).json({ error: 'Missing user identifier' });
const result = await fn(userId, req, res);
res.status(successStatus).json(result);
} catch (error) {
console.error('Minigames controller error:', error);
res.status(500).json({ error: error.message || 'Internal error' });
}
};
}
}
export default new MinigamesController();