|
1 | | -"""Un script simple para ver todas las sesiones y mensajes guardados en SQLite, con formato usando Rich.""" |
| 1 | +"""Un script simple para ver todos los hilos y mensajes guardados en SQLite, con formato usando Rich.""" |
2 | 2 |
|
3 | 3 | import argparse |
4 | 4 | import json |
|
11 | 11 |
|
12 | 12 | DB_PATH = "chat_history.sqlite3" |
13 | 13 |
|
14 | | -parser = argparse.ArgumentParser(description="Ver sesiones y mensajes en la base de datos SQLite del historial de chat.") |
15 | | -parser.add_argument("--db", default=DB_PATH, help="Ruta a la base de datos SQLite (por defecto: chat_history.sqlite3)") |
16 | | -parser.add_argument("--values", action="store_true", help="Mostrar mensajes de cada sesión (por defecto: solo listar sesiones)") |
| 14 | +parser = argparse.ArgumentParser(description="Ver hilos y mensajes en la base de datos SQLite del historial de chat.") |
| 15 | +parser.add_argument( |
| 16 | + "--db", |
| 17 | + default=DB_PATH, |
| 18 | + help="Ruta a la base de datos SQLite (por defecto: chat_history.sqlite3)", |
| 19 | +) |
| 20 | +parser.add_argument( |
| 21 | + "--values", |
| 22 | + action="store_true", |
| 23 | + help="Mostrar mensajes de cada hilo (por defecto: solo listar hilos)", |
| 24 | +) |
17 | 25 | args = parser.parse_args() |
18 | 26 |
|
19 | 27 | try: |
|
27 | 35 | print(f"[red]No se puede abrir la base de datos {args.db}: {e}[/red]") |
28 | 36 | sys.exit(1) |
29 | 37 |
|
30 | | -# Obtener todas las sesiones con conteo de mensajes |
31 | | -sessions = conn.execute( |
32 | | - "SELECT session_id, COUNT(*) as count FROM messages GROUP BY session_id ORDER BY session_id" |
| 38 | +# Obtener todos los hilos con conteo de mensajes |
| 39 | +threads = conn.execute( |
| 40 | + "SELECT thread_id, COUNT(*) as count FROM messages GROUP BY thread_id ORDER BY thread_id" |
33 | 41 | ).fetchall() |
34 | 42 |
|
35 | | -if not sessions: |
36 | | - print("[dim]No se encontraron sesiones en la base de datos.[/dim]") |
| 43 | +if not threads: |
| 44 | + print("[dim]No se encontraron hilos en la base de datos.[/dim]") |
37 | 45 | sys.exit(0) |
38 | 46 |
|
39 | | -print(f"\n[bold]Se encontraron {len(sessions)} sesión(es) en {args.db}[/bold]\n") |
| 47 | +print(f"\n[bold]Se encontraron {len(threads)} hilo(s) en {args.db}[/bold]\n") |
40 | 48 |
|
41 | 49 | if not args.values: |
42 | | - for session_id, count in sessions: |
43 | | - print(f" [bold cyan]{session_id}[/bold cyan] [dim]({count} mensajes)[/dim]") |
| 50 | + for thread_id, count in threads: |
| 51 | + print(f" [bold cyan]{thread_id}[/bold cyan] [dim]({count} mensajes)[/dim]") |
44 | 52 | print() |
45 | 53 | sys.exit(0) |
46 | 54 |
|
47 | | -for session_id, count in sessions: |
| 55 | +for thread_id, count in threads: |
48 | 56 | rows = conn.execute( |
49 | | - "SELECT message_json FROM messages WHERE session_id = ? ORDER BY id", (session_id,) |
| 57 | + "SELECT message_json FROM messages WHERE thread_id = ? ORDER BY id", (thread_id,) |
50 | 58 | ).fetchall() |
51 | 59 |
|
52 | 60 | panels = [] |
|
55 | 63 | parsed = json.loads(message_json) |
56 | 64 | role = parsed.get("role", {}).get("value", "unknown") |
57 | 65 | contents = parsed.get("contents", []) |
58 | | - # Extract display text |
| 66 | + # Extraer texto para mostrar |
59 | 67 | parts = [] |
60 | 68 | for c in contents: |
61 | 69 | if c.get("type") == "text": |
|
75 | 83 | print( |
76 | 84 | Panel( |
77 | 85 | Group(*panels), |
78 | | - title=f"[bold cyan]{session_id}[/bold cyan]", |
| 86 | + title=f"[bold cyan]{thread_id}[/bold cyan]", |
79 | 87 | subtitle=f"[dim]{count} mensaje(s)[/dim]", |
80 | 88 | ) |
81 | 89 | ) |
|
0 commit comments