/
Krams
/
nodemon
Обзор
Документация
Войти
/
Krams
/
nodemon
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/services/NodeService.js
126 строк
4 KB
Krams
first_commit
08 июн 2025, 12:17
08 июн 2025, 12:17
25d7395
Код
Авторство
О чём код?
import db from '../database.js'; // Таблицы: // node (id, name, mac, guid, ip, rack, shelf, position, state, comment) // node_list (id, name, worker_id, date) // node_list_items (id, list_id, node_id) // Получить все узлы вложенно export async function getAllNodesNested() { return new Promise((resolve, reject) => { db.all('SELECT * FROM node', [], (err, rows) => { if (err) return reject(err); const data = Array.from({ length: 9 }, () => Array.from({ length: 8 }, () => Array.from({ length: 6 }, () => null) ) ); rows.forEach((node) => { const rack = node.rack - 1; const shelf = node.shelf - 1; const position = node.position - 1; if ( rack >= 0 && rack < 9 && shelf >= 0 && shelf < 8 && position >= 0 && position < 6 ) { data[rack][shelf][position] = node; } }); resolve(data); }); }); } // Обновить узел export async function updateNode(id, { mac, guid, state, comment }) { return new Promise((resolve, reject) => { db.run( `UPDATE node SET mac = ?, guid = ?, state = ?, comment = ? WHERE id = ?`, [mac, guid, state, comment, id], function (err) { if (err) return reject(err); resolve({ changes: this.changes }); } ); }); } // Получить узел по ID export async function getNodeById(id) { return new Promise((resolve, reject) => { db.get('SELECT * FROM node WHERE id = ?', [id], (err, row) => { if (err) return reject(err); // Если узел не найден if (!row) { return reject(new Error('Node not found')); } resolve(row); }); }); } // Получить все логи узла по ID export async function getNodeLogsById(id) { return new Promise((resolve, reject) => { db.all('SELECT * FROM node_log WHERE node_id = ? ORDER BY date DESC', [id], (err, rows) => { if (err) return reject(err); if (!rows) { return reject(new Error('Logs not found')); } resolve(rows); }); }); } // Действия с логами узла // Таблица логов (id, node_id, mac, worker_id, date (в секундах unix), log) // Добавить новый лог узла export async function addNodeLog(nodeId, mac, workerId, log) { return new Promise((resolve, reject) => { db.run( `INSERT INTO node_log (node_id, mac, worker_id, date, log) VALUES (?, ?, ?, ?, ?)`, [nodeId, mac, workerId, Math.floor(Date.now() / 1000), log], function (err) { if (err) return reject(err); resolve({ id: this.lastID }); } ); }); } // Удалить лог узла по ID export async function deleteNodeLog(id) { return new Promise((resolve, reject) => { console.log(id); db.run(`DELETE FROM node_log WHERE id = ?`, [id], function (err) { if (err) return reject(err); console.log(this.changes); resolve({ changes: this.changes }); }); }); } // Действия с узлами в списке // Обновить состояние узлов в списке export async function updateNodesInList(state, listId) { console.log(state, listId); return new Promise((resolve, reject) => { db.run(`UPDATE node SET state = ? WHERE id IN (SELECT node_id FROM node_list_items WHERE list_id = ?)`, [state, listId], function (err) { if (err) return reject(err); resolve({ changes: this.changes }); }); }); }