feat: Einführung von Umgebungsvariablen und Startskripten für die Backend-Anwendung
- Hinzufügen eines zentralen Skripts zum Laden von Umgebungsvariablen aus einer .env-Datei. - Implementierung von Start- und Entwicklungs-Skripten in der package.json für eine vereinfachte Ausführung der Anwendung. - Bereinigung und Entfernung nicht mehr benötigter Minigame-Modelle und -Services zur Verbesserung der Codebasis. - Anpassungen an den Datenbankmodellen zur Unterstützung von neuen Assoziationen und zur Verbesserung der Lesbarkeit.
This commit is contained in:
@@ -1,53 +0,0 @@
|
||||
import BaseService from './BaseService.js';
|
||||
import models from '../models/index.js';
|
||||
import { Op } from 'sequelize';
|
||||
|
||||
const { MinigameCampaign, MinigameCampaignLevel, MinigameUserProgress, User } = models;
|
||||
|
||||
class MinigamesService extends BaseService {
|
||||
async listCampaigns() {
|
||||
const campaigns = await MinigameCampaign.findAll({ order: [['id', 'ASC']] });
|
||||
return campaigns;
|
||||
}
|
||||
|
||||
async getCampaign(code) {
|
||||
const campaign = await MinigameCampaign.findOne({ where: { code }, include: [{ model: MinigameCampaignLevel, as: 'levels', order: [['index', 'ASC']] }] });
|
||||
if (!campaign) throw new Error('campaign_not_found');
|
||||
return campaign;
|
||||
}
|
||||
|
||||
async getProgress(hashedUserId, code) {
|
||||
const user = await this.getUserByHashedId(hashedUserId);
|
||||
if (!user) throw new Error('user_not_found');
|
||||
const campaign = await MinigameCampaign.findOne({ where: { code } });
|
||||
if (!campaign) throw new Error('campaign_not_found');
|
||||
const progress = await MinigameUserProgress.findOne({ where: { userId: user.id, campaignId: campaign.id } });
|
||||
if (!progress) {
|
||||
return { levelIndex: 1, stars: 0, bestScore: 0 };
|
||||
}
|
||||
return progress;
|
||||
}
|
||||
|
||||
async saveProgress(hashedUserId, code, payload) {
|
||||
const user = await this.getUserByHashedId(hashedUserId);
|
||||
if (!user) throw new Error('user_not_found');
|
||||
const campaign = await MinigameCampaign.findOne({ where: { code } });
|
||||
if (!campaign) throw new Error('campaign_not_found');
|
||||
|
||||
const { levelIndex, stars, bestScore } = payload;
|
||||
const [progress, created] = await MinigameUserProgress.findOrCreate({
|
||||
where: { userId: user.id, campaignId: campaign.id },
|
||||
defaults: { levelIndex, stars, bestScore }
|
||||
});
|
||||
if (!created) {
|
||||
await progress.update({
|
||||
levelIndex: Math.max(progress.levelIndex, levelIndex),
|
||||
stars: Math.max(progress.stars, stars),
|
||||
bestScore: Math.max(progress.bestScore, bestScore),
|
||||
});
|
||||
}
|
||||
return { success: true };
|
||||
}
|
||||
}
|
||||
|
||||
export default new MinigamesService();
|
||||
|
||||
Reference in New Issue
Block a user