Update
This commit is contained in:
		@@ -86,6 +86,31 @@ class BatchScheduler {
 | 
			
		||||
    try {
 | 
			
		||||
      console.log("🔄 Running scheduled batch process...");
 | 
			
		||||
 | 
			
		||||
      // Run migration for feeds without categories (only once)
 | 
			
		||||
      if (!this.migrationCompleted) {
 | 
			
		||||
        try {
 | 
			
		||||
          const { migrateFeedsWithCategories, getFeedCategoryMigrationStatus } =
 | 
			
		||||
            await import("./database.js");
 | 
			
		||||
          const migrationStatus = await getFeedCategoryMigrationStatus();
 | 
			
		||||
 | 
			
		||||
          if (!migrationStatus.migrationComplete) {
 | 
			
		||||
            console.log("🔄 Running feed category migration...");
 | 
			
		||||
            await migrateFeedsWithCategories();
 | 
			
		||||
            this.migrationCompleted = true;
 | 
			
		||||
          } else {
 | 
			
		||||
            console.log("✅ Feed category migration already complete");
 | 
			
		||||
            this.migrationCompleted = true;
 | 
			
		||||
          }
 | 
			
		||||
        } catch (migrationError) {
 | 
			
		||||
          console.error(
 | 
			
		||||
            "❌ Error during feed category migration:",
 | 
			
		||||
            migrationError,
 | 
			
		||||
          );
 | 
			
		||||
          // Don't fail the entire batch process due to migration error
 | 
			
		||||
          this.migrationCompleted = true; // Mark as completed to avoid retrying every batch
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      await batchProcess(this.currentAbortController.signal);
 | 
			
		||||
      console.log("✅ Scheduled batch process completed");
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
 
 | 
			
		||||
@@ -107,7 +107,7 @@ function extractDomain(url: string): string | null {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Initialize database with proper error handling
 | 
			
		||||
async function initializeDatabase(): Database {
 | 
			
		||||
function initializeDatabase(): Database {
 | 
			
		||||
  // Ensure data directory exists
 | 
			
		||||
  if (!fs.existsSync(config.paths.dataDir)) {
 | 
			
		||||
    fs.mkdirSync(config.paths.dataDir, { recursive: true });
 | 
			
		||||
@@ -205,12 +205,20 @@ async function initializeDatabase(): Database {
 | 
			
		||||
  // Perform database integrity checks and fixes
 | 
			
		||||
  performDatabaseIntegrityFixes(db);
 | 
			
		||||
 | 
			
		||||
  await migrateFeedsWithCategories(db);
 | 
			
		||||
  // ALTER
 | 
			
		||||
  // ALTER TABLE feeds ADD COLUMN category TEXT DEFAULT NULL;
 | 
			
		||||
  // Ensure the category column exists
 | 
			
		||||
  const infos = db.prepare("PRAGMA table_info(feeds);").all();
 | 
			
		||||
  const hasCategory = infos.some((col: any) => col.name === "category");
 | 
			
		||||
 | 
			
		||||
  if (!hasCategory) {
 | 
			
		||||
    db.exec("ALTER TABLE feeds ADD COLUMN category TEXT DEFAULT NULL;");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return db;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const db = await initializeDatabase();
 | 
			
		||||
const db = initializeDatabase();
 | 
			
		||||
 | 
			
		||||
export interface Feed {
 | 
			
		||||
  id: string;
 | 
			
		||||
@@ -1126,7 +1134,7 @@ export async function updateFeedRequestStatus(
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Migration function to classify existing feeds without categories
 | 
			
		||||
export async function migrateFeedsWithCategories(db: Database): void {
 | 
			
		||||
export async function migrateFeedsWithCategories(): Promise<void> {
 | 
			
		||||
  try {
 | 
			
		||||
    console.log("🔄 Starting feed category migration...");
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user