// src/scripts/extractWilayas.ts
import fs from 'fs';
import path from 'path';

interface Commune {
  id: number;
  commune_name_ascii: string;
  commune_name: string;
  daira_name_ascii: string;
  daira_name: string;
  wilaya_code: string;
  wilaya_name_ascii: string;
  wilaya_name: string;
}

interface Wilaya {
  code: string;
  name: {
    arabic: string;
    ascii: string;
  };
}

const extractWilayas = () => {
  // Read communes file
  const rawData = JSON.parse(
    fs.readFileSync(path.join(__dirname, '../data/communes.json'), 'utf-8')
  ) as Commune[];

  // Create a Map to store unique wilayas
  const wilayasMap = new Map<string, Wilaya>();

  // Process each commune to extract wilaya information
  rawData.forEach(commune => {
    if (!wilayasMap.has(commune.wilaya_code)) {
      wilayasMap.set(commune.wilaya_code, {
        code: commune.wilaya_code,
        name: {
          arabic: commune.wilaya_name,
          ascii: commune.wilaya_name_ascii
        }
      });
    }
  });

  // Convert Map to array and sort by wilaya code
  const wilayas = Array.from(wilayasMap.values()).sort((a, b) => 
    Number(a.code) - Number(b.code)
  );

  // Write to file
  fs.writeFileSync(
    path.join(__dirname, '../data/wilayas.json'),
    JSON.stringify(wilayas, null, 2)
  );

  console.log(`Successfully extracted ${wilayas.length} wilayas`);
};

extractWilayas();