// db.js — وحدة الاتصال بقاعدة بيانات SQLite (باستخدام node:sqlite المدمجة)
import { DatabaseSync } from 'node:sqlite';
import { readFileSync, existsSync, mkdirSync } from 'node:fs';
import { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';

const __dirname = dirname(fileURLToPath(import.meta.url));
const DB_DIR = join(__dirname, 'data');
const DB_PATH = join(DB_DIR, 'archive.db');

if (!existsSync(DB_DIR)) mkdirSync(DB_DIR, { recursive: true });

const db = new DatabaseSync(DB_PATH);

// تطبيق المخطط (idempotent — يستخدم IF NOT EXISTS فى كل مكان)
const schema = readFileSync(join(__dirname, 'schema.sql'), 'utf-8');
db.exec(schema);

// ترحيل آمن: إضافة أعمدة جديدة لجدول articles لو لم تكن موجودة (SQLite لا يدعم
// ADD COLUMN IF NOT EXISTS مباشرة، فنفحص pragma table_info أولًا)
function ensureColumn(table, column, definition) {
  const cols = db.prepare(`PRAGMA table_info(${table})`).all();
  const exists = cols.some(c => c.name === column);
  if (!exists) {
    db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
  }
}

ensureColumn('articles', 'article_type', `TEXT DEFAULT 'مقال'`); // مقال/افتتاحية/فتوى/قصيدة/خبر...
ensureColumn('articles', 'language', `TEXT DEFAULT 'ar'`);
ensureColumn('articles', 'permalink_slug', `TEXT`);

export default db;
export { DB_PATH };
