SCHEMA_SQL = """ CREATE TABLE IF NOT EXISTS candidates ( model_id TEXT PRIMARY KEY, source TEXT NOT NULL DEFAULT 'HUGGING_FACE', origin TEXT NOT NULL, priority INTEGER NOT NULL, is_bounty INTEGER NOT NULL DEFAULT 0, is_promote INTEGER NOT NULL DEFAULT 0, known_downloaded_by_others INTEGER NOT NULL DEFAULT 0, self_download_allowed INTEGER NOT NULL DEFAULT 0, max_model_len INTEGER NOT NULL DEFAULT 1024, target_gpu_aliases TEXT, notes TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS tasks ( id INTEGER PRIMARY KEY AUTOINCREMENT, model_id TEXT NOT NULL, gpu_alias TEXT NOT NULL, gpu_type TEXT NOT NULL, engine TEXT NOT NULL DEFAULT 'vllm', priority INTEGER NOT NULL, status TEXT NOT NULL DEFAULT 'pending', attempt_count INTEGER NOT NULL DEFAULT 0, submit_count INTEGER NOT NULL DEFAULT 0, last_error_code TEXT, last_error_message TEXT, next_attempt_at TEXT, submitted_at TEXT, completed_at TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(model_id, gpu_type, engine) ); CREATE TABLE IF NOT EXISTS downloads ( model_id TEXT PRIMARY KEY, source TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'unknown', owner TEXT NOT NULL DEFAULT 'unknown', active_self_slot INTEGER NOT NULL DEFAULT 0, download_code TEXT, download_message TEXT, waiting_since TEXT, last_polled_at TEXT, next_poll_at TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS submission_attempts ( id INTEGER PRIMARY KEY AUTOINCREMENT, task_id INTEGER NOT NULL, model_id TEXT NOT NULL, gpu_type TEXT NOT NULL, strategy_id TEXT, payload_strategy_field TEXT, response_code TEXT, response_message TEXT, result TEXT NOT NULL, created_at TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS seed_imports ( id INTEGER PRIMARY KEY AUTOINCREMENT, file_path TEXT NOT NULL, file_hash TEXT, imported_count INTEGER NOT NULL, created_at TEXT NOT NULL ); CREATE INDEX IF NOT EXISTS idx_tasks_sched ON tasks(status, priority, next_attempt_at, created_at); CREATE INDEX IF NOT EXISTS idx_tasks_model ON tasks(model_id); CREATE INDEX IF NOT EXISTS idx_downloads_poll ON downloads(status, next_poll_at); """ def init_schema(conn): conn.executescript(SCHEMA_SQL) conn.commit()