slap_ryan/backend/index.js

60 lines
1.5 KiB
JavaScript

const express = require('express');
const cors = require('cors');
const fs = require('fs');
const app = express();
const port = 3001;
app.use(cors());
app.use(express.json());
const scoresFilePath = './scores.json';
/* Read scores from file. */
const readScores = () => {
try {
console.log('Reading scores from file...');
const data = fs.readFileSync(scoresFilePath, 'utf8');
console.log('Scores read successfully.');
return JSON.parse(data);
} catch (error) {
console.error('Error reading scores:', error);
return [];
}
};
/* Write scores to file. */
const writeScores = (scores) => {
try {
console.log('Writing scores to file...');
fs.writeFileSync(scoresFilePath, JSON.stringify(scores, null, 2));
console.log('Scores written successfully.');
} catch (error) {
console.error('Error writing scores:', error);
}
};
app.get('/api/scores', (req, res) => {
console.log('GET /api/scores request received');
const scores = readScores();
res.json(scores);
});
app.post('/api/scores', (req, res) => {
console.log('POST /api/scores request received');
const { name, score } = req.body;
console.log('New score:', { name, score });
const scores = readScores();
scores.push({ name, score });
scores.sort((a, b) => b.score - a.score);
const top10Scores = scores.slice(0, 10);
writeScores(top10Scores);
res.status(201).json({ message: 'Score saved successfully' });
});
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});