add ai job queue
This commit is contained in:
@@ -105,6 +105,7 @@ function initDb(db: Database.Database): void {
|
||||
migrateMediaItemsAiTagged(db)
|
||||
migrateMediaItemsAiFields(db)
|
||||
migrateLibraryAiSettings(db)
|
||||
migrateAiJobs(db)
|
||||
seedAppSettings(db)
|
||||
}
|
||||
|
||||
@@ -117,6 +118,7 @@ function seedAppSettings(db: Database.Database): void {
|
||||
ai_endpoint: '',
|
||||
ai_model: '',
|
||||
preferred_language: 'English',
|
||||
ai_max_retries: '3',
|
||||
}
|
||||
const insert = db.prepare(
|
||||
'INSERT OR IGNORE INTO app_settings (key, value) VALUES (?, ?)'
|
||||
@@ -298,3 +300,25 @@ function migrateLibrariesType(db: Database.Database): void {
|
||||
`)
|
||||
}
|
||||
}
|
||||
|
||||
function migrateAiJobs(db: Database.Database): void {
|
||||
db.exec(`
|
||||
CREATE TABLE IF NOT EXISTS ai_jobs (
|
||||
id TEXT PRIMARY KEY,
|
||||
item_key TEXT NOT NULL,
|
||||
library_id TEXT NOT NULL,
|
||||
job_type TEXT NOT NULL CHECK(job_type IN ('tag','describe','extract','translate')),
|
||||
status TEXT NOT NULL DEFAULT 'queued' CHECK(status IN ('queued','running','completed','failed')),
|
||||
error TEXT,
|
||||
attempt INTEGER NOT NULL DEFAULT 0,
|
||||
max_retries INTEGER NOT NULL DEFAULT 3,
|
||||
created_at INTEGER NOT NULL,
|
||||
started_at INTEGER,
|
||||
completed_at INTEGER,
|
||||
item_title TEXT
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ai_jobs_status ON ai_jobs(status);
|
||||
CREATE INDEX IF NOT EXISTS ai_jobs_created_at ON ai_jobs(created_at);
|
||||
`)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user