'use strict'; /* * Сид метаболических путей в bio_pathways. * Источник данных — backend/scripts/data/biochem_pathways.json (изначально * извлечён из инлайн-объекта PATHWAYS; теперь это самодостаточный источник * правды, не зависящий от фронта). Каждый путь — документ data_json. * Идемпотентно (upsert по slug): повторный запуск синхронизирует данные. * * Запуск: node backend/scripts/seed_biochem_pathways.js */ const db = require('../src/db/db'); const P = require('./biochem_pathways_data'); const upsert = db.prepare(`INSERT INTO bio_pathways (slug, name, color, ord, data_json) VALUES (@slug, @name, @color, @ord, @data_json) ON CONFLICT(slug) DO UPDATE SET name=excluded.name, color=excluded.color, ord=excluded.ord, data_json=excluded.data_json`); const slugs = Object.keys(P); let n = 0; db.exec('BEGIN'); try { slugs.forEach((slug, idx) => { const p = P[slug]; upsert.run({ slug, name: p.name || slug, color: p.color || '#9B5DE5', ord: idx, data_json: JSON.stringify(p), }); n++; }); db.exec('COMMIT'); } catch (e) { db.exec('ROLLBACK'); throw e; } console.log(`biochem pathways seed: ${n} путь(ей) — ${slugs.join(', ')}`); console.log('в БД:', db.prepare('SELECT slug, name, LENGTH(data_json) AS bytes FROM bio_pathways ORDER BY ord').all() .map(r => `${r.slug}(${r.bytes}b)`).join(' '));