Achivements abends um 19 uhr

This commit is contained in:
2025-09-07 16:54:09 +02:00
parent 8342d95a13
commit 5bed125cf6
10 changed files with 1136 additions and 347 deletions

View File

@@ -890,7 +890,7 @@ router.post('/v1/private/create-time', requireApiKey, async (req, res) => {
// Achievement-Überprüfung nach Zeit-Eingabe
try {
await pool.query('SELECT check_all_achievements($1)', [player_id]);
await pool.query('SELECT check_immediate_achievements($1)', [player_id]);
console.log(`✅ Achievement-Check für Spieler ${player_id} ausgeführt`);
} catch (achievementError) {
console.error('Fehler bei Achievement-Check:', achievementError);
@@ -1027,25 +1027,6 @@ router.post('/v1/private/users/find', requireApiKey, async (req, res) => {
// RFID LINKING & USER MANAGEMENT ENDPOINTS (No API Key required for dashboard)
// ============================================================================
// Get all players for RFID linking (no auth required for dashboard)
router.get('/v1/public/players', async (req, res) => {
try {
const result = await pool.query(
`SELECT id, firstname, lastname, birthdate, rfiduid, created_at
FROM players
ORDER BY created_at DESC`
);
res.json(result.rows);
} catch (error) {
console.error('Fehler beim Abrufen der Spieler:', error);
res.status(500).json({
success: false,
message: 'Fehler beim Abrufen der Spieler'
});
}
});
// Create new player with optional Supabase user linking (no auth required for dashboard)
router.post('/v1/public/players', async (req, res) => {
@@ -2180,7 +2161,7 @@ router.post('/v1/admin/runs', requireAdminAuth, async (req, res) => {
// Achievement-Überprüfung nach Zeit-Eingabe
try {
await pool.query('SELECT check_all_achievements($1)', [player_id]);
await pool.query('SELECT check_immediate_achievements($1)', [player_id]);
console.log(`✅ Achievement-Check für Spieler ${player_id} ausgeführt`);
} catch (achievementError) {
console.error('Fehler bei Achievement-Check:', achievementError);
@@ -2786,6 +2767,27 @@ router.post('/achievements/daily-check', async (req, res) => {
}
});
// Run best-time achievement check (for manual testing or cron jobs)
router.post('/achievements/best-time-check', async (req, res) => {
try {
// This endpoint runs the best-time achievement check
const { runBestTimeAchievements } = require('../scripts/best_time_achievements');
await runBestTimeAchievements();
res.json({
success: true,
message: 'Best-Time Achievement-Überprüfung abgeschlossen'
});
} catch (error) {
console.error('Error running best-time achievement check:', error);
res.status(500).json({
success: false,
message: 'Fehler bei der Best-Time Achievement-Überprüfung'
});
}
});
// Get achievement leaderboard
router.get('/achievements/leaderboard', async (req, res) => {
try {