/
Coderdev
/
web-nodejs-labs
Обзор
Документация
Войти
/
Coderdev
/
web-nodejs-labs
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
backend/src/services/lab8/student.service.js
65 строк
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'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const dataFilePath = path.join(__dirname, '..', '..', '..', 'data', 'lab8', 'task1.txt'); class StudentService { async readStudents() { try { const data = await fs.readFile(dataFilePath, 'utf8'); return JSON.parse(data); } catch (error) { if (error.code === 'ENOENT') { return []; } throw error; } } async writeStudents(students) { await fs.mkdir(path.dirname(dataFilePath), { recursive: true }); await fs.writeFile(dataFilePath, JSON.stringify(students, null, 2), 'utf8'); } async getAll() { return await this.readStudents(); } makeInitials(lastname, firstname, surname) { return { lastname, firstnameLetter: firstname.charAt(0).toUpperCase() + '.', surnameLetter: surname.charAt(0).toUpperCase() + '.' }; } makeProjectStatus(lastname, firstname, surname, inProject) { return { ...this.makeInitials(lastname, firstname, surname), projectParticipant: inProject ? 'Участвует' : 'Не участвует' }; } async create(data) { const students = await this.readStudents(); const nextId = students.length > 0 ? Math.max(...students.map(s => s.id)) + 1 : 1; const newStudent = { id: nextId, ...data }; students.push(newStudent); await this.writeStudents(students); return newStudent; } } export default new StudentService();