perf(*): bound list queries, batch fetches, harden media downloads

This commit is contained in:
hh committed 2026-09-01 21:38:22 +02:00
1 parent 9c12628304
commit 1fa4f18a9b
35 files changed
+473 -138

No files matched your search

+6 -5
View File
@@ -1,7 +1,8 @@
import json
import asyncpg
from utils.files import media_file_name
from utils.read.message_view import load_raw
from utils.read.models import MediaVersionView, MediaView
MEDIA_COLS = (
@@ -40,15 +41,15 @@ async def _web_page_media_stub(
pool: asyncpg.Pool, account_id: int, chat_id: int, message_id: int
) -> MediaView | None:
row = await pool.fetchrow(
"SELECT date, raw FROM messages "
"SELECT date, raw->'web_page' AS web_page FROM messages "
"WHERE account_id = $1 AND chat_id = $2 AND message_id = $3",
account_id,
chat_id,
message_id,
)
if row is None:
if row is None or row["web_page"] is None:
return None
web_page = load_raw(row["raw"]).get("web_page")
web_page = json.loads(row["web_page"])
if not isinstance(web_page, dict):
return None
kind = next(
@@ -105,7 +106,7 @@ async def get_media_versions(
rows = await pool.fetch(
f"SELECT {_VERSION_COLS} FROM media_versions " # noqa: S608
"WHERE account_id = $1 AND chat_id = $2 AND message_id = $3 "
"ORDER BY observed_at",
"ORDER BY observed_at LIMIT 500",
account_id,
chat_id,
message_id,