// seed-articles-page10.js — حرف الميم (من صفحة فهرس PDF رقم 10)

import db from '../db.js';

const volumeId = parseInt(process.argv[2] || '1', 10);

const NEW_AUTHORS = [
  { display_name: 'حضرة الفاضل خليل مذكور', role_title: 'كاتب' },
];

function normalize(s) {
  return s.replace(/[إأآا]/g, 'ا').replace(/ى/g, 'ي').replace(/ة/g, 'ه').replace(/\s+/g, ' ').trim();
}

function upsertAuthor({ display_name, role_title }) {
  const existing = db.prepare(`SELECT id FROM authors WHERE display_name = ?`).get(display_name);
  if (existing) return existing.id;
  const result = db.prepare(`
    INSERT INTO authors (display_name, normalized_name, role_title) VALUES (?, ?, ?)
  `).run(display_name, normalize(display_name), role_title);
  return Number(result.lastInsertRowid);
}

for (const a of NEW_AUTHORS) upsertAuthor(a);

function getAuthorId(name) {
  if (!name) return null;
  const row = db.prepare(`SELECT id FROM authors WHERE display_name = ?`).get(name);
  return row ? row.id : null;
}

function getAuthorIdFuzzy(partial) {
  const row = db.prepare(`SELECT id FROM authors WHERE display_name LIKE ?`).get(`%${partial}%`);
  return row ? row.id : null;
}

const articlesData = [
  ['مبادئ عامة فى الاقتصاد السياسى', 'قلم الترجمة', 461, null, 'م', 1], // متسلسل: ٤٦١،٦١٨،٧١٥
  ['مثال من عناية الألمان بتربية أولادهم', 'صاحب العزة الأستاذ مدير المجلة', 226, null, 'م', 2], // متسلسل: ٢٢٦،٣٩٠،٤٧٦
  ['محاسن الأخلاق فى الشريعة الاسلامية', 'فضيلة الأستاذ الشيخ إبراهيم الجبالي', 521, null, 'م', 3],
  ['المدنية الفاضلة فى الاسلام', 'فضيلة الأستاذ رئيس التحرير', 243, null, 'م', 4],
  ['مدارك المرام فى مسالك الصيام', null, 540, null, 'م', 5],
  ['مراعاة العرف', 'فضيلة الأستاذ رئيس التحرير', 534, null, 'م', 6],
  ['المسلمون فى روسيا', 'حضرة الفاضل خليل مذكور', 237, null, 'م', 7], // متسلسل: ٢٣٧،٤٥١
  ['المسلمون فى يوغوسلافية', 'قلم الترجمة', 312, null, 'م', 8],
  ['معجزاته صلى الله عليه وسلم الحسية', 'فضيلة الأستاذ الشيخ يوسف الدجوى', 497, null, 'م', 9],
  ['المعراج', 'فضيلة الأستاذ الشيخ يوسف الدجوى', 672, null, 'م', 10],
  ['المعاهدات والمحالفات', null, 540, null, 'م', 11],
  ['مقتطفات عامية', null, 74, null, 'م', 12], // الأستاذ محمد الحسيني رضا أفندي (تعريب)
  ['مقتطفات جغرافية', null, 76, null, 'م', 13], // نفسه
  ['مكانة الأزهر وأثره فى حفظ الدين وورق الشرق', 'فضيلة الأستاذ رئيس التحرير', 723, null, 'م', 14],
  ['الموقف الحقيقى للمربى إزاء الطفل', 'صاحب العزة الأستاذ مدير المجلة', 229, null, 'م', 15],
  ['مولده صلى الله عليه وسلم ونسبه الشريف', 'فضيلة الأستاذ الشيخ إبراهيم الجبالي', 221, null, 'م', 16],
  ['موجز تاريخ مصر والاسلام', null, 455, null, 'م', 17], // متسلسل: ٤٥٥،٥٣٣
  ['ميل النباتات شطر طبقات أرضية خاصة', 'قلم الترجمة', 560, null, 'م', 18],
];

const insertArticle = db.prepare(`
  INSERT INTO articles (volume_id, title, author_id, start_page, end_page, toc_letter, toc_order)
  VALUES (?, ?, ?, ?, ?, ?, ?)
`);

const ids = {};
let count = 0;
for (const [title, authorName, startPage, endPage, letter, order] of articlesData) {
  const authorId = getAuthorId(authorName);
  const result = insertArticle.run(volumeId, title, authorId, startPage, endPage, letter, order);
  ids[title] = Number(result.lastInsertRowid);
  count++;
}

// ربط المؤلفين بمطابقة جزئية للسجلات الموجودة مسبقا بصيغ مختلفة
const fuzzyLinks = [
  ['مقتطفات عامية', 'محمد الحسيني رضا'],
  ['مقتطفات جغرافية', 'محمد الحسيني رضا'],
];
for (const [title, fuzzyName] of fuzzyLinks) {
  const aid = getAuthorIdFuzzy(fuzzyName);
  if (aid) db.prepare(`UPDATE articles SET author_id = ? WHERE id = ?`).run(aid, ids[title]);
}

const insertInstallment = db.prepare(`
  INSERT INTO article_installments (article_id, printed_start_page, installment_order, verified)
  VALUES (?, ?, ?, 0)
`);

// المقالات المتسلسلة (حلقات متعددة) المؤكدة بصريا من هذه الصفحة
const installmentsMap = {
  'مبادئ عامة فى الاقتصاد السياسى': [461, 618, 715],
  'مثال من عناية الألمان بتربية أولادهم': [226, 390, 476],
  'المسلمون فى روسيا': [237, 451],
  'موجز تاريخ مصر والاسلام': [455, 533],
};
for (const [title, pages] of Object.entries(installmentsMap)) {
  pages.forEach((p, idx) => insertInstallment.run(ids[title], p, idx + 1));
}

console.log(`✅ تم إدخال ${count} مقالًا (حرف الميم) للمجلد رقم ${volumeId}`);
