"""videos 表:仅保存文件相对路径等元数据。""" from __future__ import annotations import sqlite3 from typing import Any, List, Optional, Tuple def insert_row( conn: sqlite3.Connection, file_path: str, title: Optional[str], duration_ms: Optional[int], status: str, source: str, account_id: Optional[str], error_msg: Optional[str], extra_json: Optional[str], created_at: int, updated_at: int, ) -> int: cur = conn.cursor() cur.execute( """ INSERT INTO videos ( file_path, title, duration_ms, status, source, account_id, error_msg, extra_json, created_at, updated_at ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( file_path, title, duration_ms, status, source, account_id, error_msg, extra_json, created_at, updated_at, ), ) return int(cur.lastrowid) def update_file_path(conn: sqlite3.Connection, video_id: int, file_path: str, updated_at: int) -> None: cur = conn.cursor() cur.execute( "UPDATE videos SET file_path = ?, updated_at = ? WHERE id = ?", (file_path, updated_at, video_id), ) def fetch_by_id(conn: sqlite3.Connection, video_id: int) -> Optional[Tuple[Any, ...]]: cur = conn.cursor() cur.execute( """ SELECT id, file_path, title, duration_ms, status, source, account_id, error_msg, extra_json, created_at, updated_at FROM videos WHERE id = ? """, (video_id,), ) return cur.fetchone() def list_recent(conn: sqlite3.Connection, limit: int) -> List[Tuple[Any, ...]]: cur = conn.cursor() cur.execute( """ SELECT id, file_path, title, duration_ms, status, source, account_id, error_msg, extra_json, created_at, updated_at FROM videos ORDER BY updated_at DESC, id DESC LIMIT ? """, (int(limit),), ) return list(cur.fetchall()) def delete_by_id(conn: sqlite3.Connection, video_id: int) -> int: cur = conn.cursor() cur.execute("DELETE FROM videos WHERE id = ?", (video_id,)) return int(cur.rowcount) def update_feedback( conn: sqlite3.Connection, video_id: int, status: str, account_id: Optional[str], error_msg: Optional[str], updated_at: int, ) -> None: cur = conn.cursor() cur.execute( """ UPDATE videos SET status = ?, account_id = ?, error_msg = ?, updated_at = ? WHERE id = ? """, (status, account_id, error_msg, updated_at, video_id), )