/ scripts / backfill-keywords.js
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();