Редактировать postgres_service.py

This commit is contained in:
Markov Andrey
2026-06-30 22:45:16 +00:00
parent fef231e992
commit b149770abe

View File

@@ -270,10 +270,18 @@ class PostgresService:
user_jid, role, content, room_jid
)
async def get_history(self, user_jid: str, room_jid: str = None, limit: int = 100) -> List[Dict]:
async def get_history(self, user_jid: str, room_jid: str = None, limit: int = 100, offset: int = 0) -> List[Dict]:
"""
Возвращает последние limit сообщений, отсортированных от старых к новым.
Если room_jid указан история комнаты, иначе личная история пользователя.
Возвращает историю диалога с поддержкой пагинации.
Аргументы:
user_jid: JID пользователя.
room_jid: JID комнаты (None для личного чата).
limit: максимальное количество сообщений.
offset: смещение (сколько пропустить).
Возвращает:
List[Dict]: список сообщений с ключами role, content, timestamp.
"""
async with self.pool.acquire() as conn:
if room_jid:
@@ -283,9 +291,9 @@ class PostgresService:
FROM history
WHERE room_jid = $1
ORDER BY timestamp ASC
LIMIT $2
LIMIT $2 OFFSET $3
""",
room_jid, limit
room_jid, limit, offset
)
else:
rows = await conn.fetch(
@@ -294,9 +302,9 @@ class PostgresService:
FROM history
WHERE user_jid = $1 AND room_jid IS NULL
ORDER BY timestamp ASC
LIMIT $2
LIMIT $2 OFFSET $3
""",
user_jid, limit
user_jid, limit, offset
)
return [dict(row) for row in rows]