Skip to content
This repository was archived by the owner on Feb 12, 2026. It is now read-only.

Commit 3dc9079

Browse files
authored
fix(cache): fix quality separation (#131)
1 parent 5f4fd70 commit 3dc9079

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

nowplaying/bot/reporter.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from traceback import format_exc
2+
13
from aiogram.exceptions import AiogramError
24
from aiogram.types import BufferedInputFile
35
from loguru import logger
@@ -39,6 +41,6 @@ async def report_error(message: str, exception: Exception | None = None) -> None
3941

4042
logger.opt(exception=exception).error(message)
4143
try:
42-
await report_to_dev(message + f'\nException: {exception}')
44+
await report_to_dev(message + f'\n{format_exc()}')
4345
except AiogramError as exc:
4446
logger.opt(exception=exc).error('Unable to report to dev')

nowplaying/core/database.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,13 @@ async def store_cached_file(
105105
pool = await self.get_pool()
106106
async with pool.acquire() as conn, conn.transaction():
107107
await conn.execute(
108-
'INSERT INTO cached_files (uri, file_id, cached_by_user_id, quality_info) VALUES ($1, $2, $3, $4) '
109-
'ON CONFLICT (uri) DO UPDATE SET file_id = $2, cached_by_user_id = $3, quality_info = $4',
108+
'INSERT INTO cached_files (uri, file_id, cached_by_user_id, quality_info) '
109+
'VALUES ($1, $2, $3, $4) '
110+
'ON CONFLICT (uri, highest_available) DO UPDATE '
111+
'SET '
112+
'file_id = EXCLUDED.file_id, '
113+
'cached_by_user_id = EXCLUDED.cached_by_user_id, '
114+
'quality_info = EXCLUDED.quality_info;',
110115
uri,
111116
file_id,
112117
cached_by_user_id,

nowplaying/core/database_init.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,13 @@
1313
CREATE TABLE IF NOT EXISTS cached_files
1414
(
1515
id SERIAL PRIMARY KEY,
16-
uri VARCHAR UNIQUE NOT NULL,
16+
uri VARCHAR NOT NULL,
1717
file_id VARCHAR NOT NULL,
1818
cached_by_user_id BIGINT,
19-
quality_info JSONB NOT NULL
19+
quality_info JSONB NOT NULL,
20+
highest_available BOOLEAN
21+
GENERATED ALWAYS AS ((quality_info ->> 'highest_available')::BOOLEAN) STORED,
22+
UNIQUE (uri, highest_available)
2023
);
2124
CREATE INDEX IF NOT EXISTS our_uri ON cached_files (uri);
2225
CREATE INDEX IF NOT EXISTS cached_by_user ON cached_files (cached_by_user_id);

0 commit comments

Comments
 (0)