"""Consulta a configuração editorial concluída mais recente de um vídeo.""" from __future__ import annotations import argparse import json from pathlib import Path import sqlite3 import sys CAMINHO_DO_CODIGO = Path(__file__).resolve().parent.parent if str(CAMINHO_DO_CODIGO) not in sys.path: sys.path.insert(0, str(CAMINHO_DO_CODIGO)) from engine.persistencia.conexao import abrir_banco def consultar(caminho_do_banco: Path, video_id: str) -> dict[str, object] | None: """Retorna a edição mais recente sem alterar o banco.""" conexao = abrir_banco(caminho_do_banco) try: linha = conexao.execute( """SELECT id, video_id, sequencia, tipo_de_video, configuracao, concluida_em FROM edicoes_de_video WHERE video_id = ? ORDER BY concluida_em DESC, id DESC LIMIT 1""", (video_id,), ).fetchone() if linha is None: return None return { "id": linha["id"], "video_id": linha["video_id"], "sequencia": linha["sequencia"], "tipo_de_video": linha["tipo_de_video"], "configuracao": json.loads(linha["configuracao"]), "concluida_em": linha["concluida_em"], } finally: conexao.close() def principal() -> None: """Executa a consulta pela linha de comando.""" parser = argparse.ArgumentParser() parser.add_argument("video_id") parser.add_argument("--banco", type=Path, default=Path(".jhonny/analises.db")) opcoes = parser.parse_args() try: edicao = consultar(opcoes.banco, opcoes.video_id) if edicao is None: raise ValueError("Nenhuma edição concluída encontrada para este vídeo.") print(json.dumps({"ok": True, "edicao": edicao}, ensure_ascii=False)) except (OSError, ValueError, sqlite3.Error, json.JSONDecodeError) as erro: print(json.dumps({"ok": False, "erro": str(erro)}, ensure_ascii=False)) raise SystemExit(1) from erro if __name__ == "__main__": principal()