/
Krams
/
nodemon2
Обзор
Документация
Войти
/
Krams
/
nodemon2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/services/AnalyzerStorageService.js
76 строк
2 KB
Иван Новиков
final
25 май 2026, 17:46
25 май 2026, 17:46
2c76ffd
Код
Авторство
О чём код?
import db from '../database.js'; function nowSec() { return Math.floor(Date.now() / 1000); } export async function ensureAnalyzerStorage() { await new Promise((resolve, reject) => { db.run( `CREATE TABLE IF NOT EXISTS node_analysis_latest ( node_id INTEGER PRIMARY KEY, json_result TEXT NOT NULL, computed_at INTEGER NOT NULL, updated_at INTEGER NOT NULL )`, [], (err) => { if (err) return reject(err); resolve(); } ); }); } export async function upsertNodeAnalysisLatest(nodeId, result) { const safeId = Number.parseInt(nodeId, 10); if (!Number.isFinite(safeId) || safeId <= 0) { throw new Error('nodeId must be a positive number'); } const ts = nowSec(); const json = JSON.stringify(result ?? {}); await new Promise((resolve, reject) => { db.run( `INSERT INTO node_analysis_latest (node_id, json_result, computed_at, updated_at) VALUES (?, ?, ?, ?) ON CONFLICT(node_id) DO UPDATE SET json_result = excluded.json_result, computed_at = excluded.computed_at, updated_at = excluded.updated_at`, [safeId, json, ts, ts], (err) => { if (err) return reject(err); resolve(); } ); }); return { ok: true }; } export async function getNodeAnalysisLatest(nodeId) { const safeId = Number.parseInt(nodeId, 10); if (!Number.isFinite(safeId) || safeId <= 0) return null; return new Promise((resolve) => { db.get( `SELECT node_id, json_result, computed_at, updated_at FROM node_analysis_latest WHERE node_id = ?`, [safeId], (err, row) => { if (err || !row) return resolve(null); let parsed = null; try { parsed = JSON.parse(String(row.json_result || '{}')); } catch { parsed = null; } resolve({ node_id: Number(row.node_id), computed_at: Number(row.computed_at) || null, updated_at: Number(row.updated_at) || null, result: parsed, }); } ); }); }