Update
This commit is contained in:
		@@ -25,7 +25,7 @@ class BatchScheduler {
 | 
				
			|||||||
  constructor() {
 | 
					  constructor() {
 | 
				
			||||||
    // Check if initial run is disabled via environment variable
 | 
					    // Check if initial run is disabled via environment variable
 | 
				
			||||||
    if (config.batch.disableInitialRun) {
 | 
					    if (config.batch.disableInitialRun) {
 | 
				
			||||||
      console.log("⏸️  Initial batch run disabled by configuration");
 | 
					      console.log("⏸  Initial batch run disabled by configuration");
 | 
				
			||||||
      // Still schedule regular runs, just skip the initial one
 | 
					      // Still schedule regular runs, just skip the initial one
 | 
				
			||||||
      this.scheduleRegularRuns();
 | 
					      this.scheduleRegularRuns();
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
@@ -72,7 +72,7 @@ class BatchScheduler {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  private async runBatch(): Promise<void> {
 | 
					  private async runBatch(): Promise<void> {
 | 
				
			||||||
    if (this.state.isRunning) {
 | 
					    if (this.state.isRunning) {
 | 
				
			||||||
      console.log("⚠️  Batch process already running, skipping");
 | 
					      console.log("!  Batch process already running, skipping");
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -85,28 +85,7 @@ class BatchScheduler {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      console.log("🔄 Running scheduled batch process...");
 | 
					      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);
 | 
					      await batchProcess(this.currentAbortController.signal);
 | 
				
			||||||
      console.log("✅ Scheduled batch process completed");
 | 
					      console.log("✅ Scheduled batch process completed");
 | 
				
			||||||
    } catch (error) {
 | 
					    } catch (error) {
 | 
				
			||||||
@@ -129,7 +108,7 @@ class BatchScheduler {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  public enable(): void {
 | 
					  public enable(): void {
 | 
				
			||||||
    if (this.state.enabled) {
 | 
					    if (this.state.enabled) {
 | 
				
			||||||
      console.log("ℹ️  Batch scheduler already enabled");
 | 
					      console.log("i  Batch scheduler already enabled");
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -140,12 +119,12 @@ class BatchScheduler {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  public disable(): void {
 | 
					  public disable(): void {
 | 
				
			||||||
    if (!this.state.enabled) {
 | 
					    if (!this.state.enabled) {
 | 
				
			||||||
      console.log("ℹ️  Batch scheduler already disabled");
 | 
					      console.log("i  Batch scheduler already disabled");
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    this.state.enabled = false;
 | 
					    this.state.enabled = false;
 | 
				
			||||||
    console.log("⏸️  Batch scheduler disabled");
 | 
					    console.log("⏸  Batch scheduler disabled");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (this.state.intervalId) {
 | 
					    if (this.state.intervalId) {
 | 
				
			||||||
      clearTimeout(this.state.intervalId);
 | 
					      clearTimeout(this.state.intervalId);
 | 
				
			||||||
@@ -164,7 +143,7 @@ class BatchScheduler {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  public forceStop(): boolean {
 | 
					  public forceStop(): boolean {
 | 
				
			||||||
    if (!this.state.isRunning || !this.currentAbortController) {
 | 
					    if (!this.state.isRunning || !this.currentAbortController) {
 | 
				
			||||||
      console.log("ℹ️  No batch process currently running to stop");
 | 
					      console.log("i  No batch process currently running to stop");
 | 
				
			||||||
      return false;
 | 
					      return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -107,7 +107,7 @@ function extractDomain(url: string): string | null {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Initialize database with proper error handling
 | 
					// Initialize database with proper error handling
 | 
				
			||||||
async function initializeDatabase(): Promise<Database> {
 | 
					function initializeDatabase(): Database {
 | 
				
			||||||
  // Ensure data directory exists
 | 
					  // Ensure data directory exists
 | 
				
			||||||
  if (!fs.existsSync(config.paths.dataDir)) {
 | 
					  if (!fs.existsSync(config.paths.dataDir)) {
 | 
				
			||||||
    fs.mkdirSync(config.paths.dataDir, { recursive: true });
 | 
					    fs.mkdirSync(config.paths.dataDir, { recursive: true });
 | 
				
			||||||
@@ -205,7 +205,7 @@ async function initializeDatabase(): Promise<Database> {
 | 
				
			|||||||
  // Perform database integrity checks and fixes
 | 
					  // Perform database integrity checks and fixes
 | 
				
			||||||
  performDatabaseIntegrityFixes(db);
 | 
					  performDatabaseIntegrityFixes(db);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  await migrateFeedsWithCategories();
 | 
					  migrateFeedsWithCategories(db);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return db;
 | 
					  return db;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1126,7 +1126,7 @@ export async function updateFeedRequestStatus(
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Migration function to classify existing feeds without categories
 | 
					// Migration function to classify existing feeds without categories
 | 
				
			||||||
export async function migrateFeedsWithCategories(): Promise<void> {
 | 
					export function migrateFeedsWithCategories(db: Database): void {
 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
    console.log("🔄 Starting feed category migration...");
 | 
					    console.log("🔄 Starting feed category migration...");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user