import os import aiosqlite DB_DIR = os.environ.get("DB_DIR", os.path.dirname(os.path.abspath(__file__))) DB_PATH = os.path.join(DB_DIR, "t_youtube.db") async def init_db(): os.makedirs(os.path.dirname(DB_PATH), exist_ok=True) async with aiosqlite.connect(DB_PATH) as db: await db.execute(""" CREATE TABLE IF NOT EXISTS videos ( video_id TEXT PRIMARY KEY, title TEXT NOT NULL, channel_name TEXT, channel_id TEXT, url TEXT NOT NULL, thumbnail_url TEXT, publish_date TEXT, duration INTEGER, transcript TEXT, summary TEXT, status TEXT DEFAULT 'pending', created_at TEXT DEFAULT CURRENT_TIMESTAMP ) """) await db.execute(""" CREATE TABLE IF NOT EXISTS video_notes ( video_id TEXT PRIMARY KEY, note_text TEXT NOT NULL, updated_at TEXT DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (video_id) REFERENCES videos(video_id) ) """) await db.execute(""" CREATE TABLE IF NOT EXISTS agent_queue ( id INTEGER PRIMARY KEY AUTOINCREMENT, video_id TEXT NOT NULL, user_prompt TEXT NOT NULL, status TEXT DEFAULT 'pending', created_at TEXT DEFAULT CURRENT_TIMESTAMP, processed_at TEXT, FOREIGN KEY (video_id) REFERENCES videos(video_id) ) """) await db.commit() async def get_db(): db = await aiosqlite.connect(DB_PATH) db.row_factory = aiosqlite.Row try: yield db finally: await db.close()