/
Coderdev
/
web-nodejs-labs
Обзор
Документация
Войти
/
Coderdev
/
web-nodejs-labs
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
backend/src/services/lab8/results.service.js
62 строки
2 KB
Coderdev
1
12 май 2026, 12:34
12 май 2026, 12:34
f5e899f
Код
Авторство
О чём код?
import fs from 'fs/promises'; import path from 'path'; import { fileURLToPath } from 'url'; import worldCupService from './worldcup.service.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const task3Dir = path.join(__dirname, '..', '..', '..', 'data', 'lab8', 'task3'); const resultsPath = path.join(task3Dir, 'resultsQatar22.json'); const MONTH_ORDER = { Jan:1, Feb:2, Mar:3, Apr:4, May:5, Jun:6, Jul:7, Aug:8, Sep:9, Oct:10, Nov:11, Dec:12 }; function parseDate(dateStr) { const [day, mon] = dateStr.trim().split(/\s+/); return (MONTH_ORDER[mon] || 0) * 100 + parseInt(day); } class ResultsService { async buildResults() { const matches = await worldCupService.parseCupFile(); const results = matches.map(m => ({ group: m.group, date: m.date, team1: m.team1, score: `${m.score1}-${m.score2}`, team2: m.team2, stadium: m.stadium, city: m.city, // draw | team1 | team2 result: m.score1 === m.score2 ? 'draw' : m.score1 > m.score2 ? 'team1' : 'team2' })); results.sort((a, b) => parseDate(a.date) - parseDate(b.date)); await fs.mkdir(task3Dir, { recursive: true }); await fs.writeFile(resultsPath, JSON.stringify(results, null, 2), 'utf8'); return results; } async getResults() { try { const data = await fs.readFile(resultsPath, 'utf8'); return JSON.parse(data); } catch { return await this.buildResults(); } } } export default new ResultsService();