/
Coderdev
/
web-nodejs-labs
Обзор
Документация
Войти
/
Coderdev
/
web-nodejs-labs
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
backend/src/services/lab8/lab8.service.js
80 строк
3 KB
Coderdev
1
13 апр 2026, 21:35
13 апр 2026, 21:35
d23c89a
Код
Авторство
О чём код?
import fs from 'fs/promises'; import path from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const task1Path = path.join(__dirname, '..', '..', '..', 'data', 'task1.txt'); const task2GroupsPath = path.join(__dirname, '..', '..', '..', 'data', 'task2', 'groups.json'); const task2StadiumPath = path.join(__dirname, '..', '..', '..', 'data', 'task2', 'stadium.json'); const task3ResultsPath = path.join(__dirname, '..', '..', '..', 'data', 'task3', 'resultsQatar22.json'); class Lab8Service { async readJson(filePath, fallback = []) { try { const data = await fs.readFile(filePath, 'utf8'); return JSON.parse(data); } catch (error) { if (error.code === 'ENOENT') return fallback; throw error; } } async writeJson(filePath, data) { await fs.writeFile(filePath, JSON.stringify(data, null, 2), 'utf8'); } makeInitials(data) { return { lastname: String(data.lastname).trim(), firstnameLetter: String(data.firstname).trim().charAt(0).toUpperCase(), surnameLetter: String(data.surname).trim().charAt(0).toUpperCase() }; } makeProjectStatus(data) { const normalized = String(data.project ?? '').toLowerCase(); const isParticipant = normalized === 'true' || normalized === '1' || normalized === 'yes' || normalized === 'on'; return { ...this.makeInitials(data), projectParticipant: isParticipant ? 'Участвует' : 'Не участвует' }; } async saveTask1(data) { const rows = await this.readJson(task1Path, []); const nextId = rows.length > 0 ? Math.max(...rows.map(item => item.id)) + 1 : 1; const record = { id: nextId, lastname: String(data.lastname).trim(), firstname: String(data.firstname).trim(), surname: String(data.surname).trim(), gender: String(data.gender).trim(), faculty: String(data.faculty).trim(), project: String(data.project ?? '').toLowerCase() === 'true' || String(data.project ?? '').toLowerCase() === 'on', projectName: String(data.projectName ?? '').trim() }; rows.push(record); await this.writeJson(task1Path, rows); return record; } async getTask1Records() { return await this.readJson(task1Path, []); } async getGroups() { return await this.readJson(task2GroupsPath, {}); } async getStadiums() { return await this.readJson(task2StadiumPath, {}); } async getResults() { return await this.readJson(task3ResultsPath, []); } } export default new Lab8Service();