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:
Torsten Schulz (local)
2025-08-23 22:27:19 +02:00
parent 66818cc728
commit 6da849ca3c
128 changed files with 1054 additions and 1611 deletions

View File

@@ -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();