backfill-keywords.js
1 /** 2 * Backfill Keywords Script 3 * Populate keywords table from existing sites data 4 */ 5 6 import { createDatabaseConnection } from '../src/utils/db.js'; 7 import { join, dirname } from 'path'; 8 import { fileURLToPath } from 'url'; 9 import { backfillKeywordsFromSites } from '../src/utils/keyword-manager.js'; 10 import Logger from '../src/utils/logger.js'; 11 12 const __filename = fileURLToPath(import.meta.url); 13 const __dirname = dirname(__filename); 14 const projectRoot = join(__dirname, '..'); 15 16 const logger = new Logger('BackfillKeywords'); 17 18 function main() { 19 const dbPath = join(projectRoot, 'db/sites.db'); 20 const db = createDatabaseConnection(dbPath); 21 db.pragma('foreign_keys = ON'); // Enforce foreign key constraints 22 23 try { 24 logger.info('Starting keywords backfill...'); 25 const count = backfillKeywordsFromSites(db); 26 logger.success(`Successfully backfilled ${count} keywords`); 27 } catch (error) { 28 logger.error('Backfill failed', error); 29 process.exit(1); 30 } finally { 31 db.close(); 32 } 33 } 34 35 main();