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