'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('  '));
