Редактировать 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 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: async with self.pool.acquire() as conn:
if room_jid: if room_jid:
@@ -283,9 +291,9 @@ class PostgresService:
FROM history FROM history
WHERE room_jid = $1 WHERE room_jid = $1
ORDER BY timestamp ASC ORDER BY timestamp ASC
LIMIT $2 LIMIT $2 OFFSET $3
""", """,
room_jid, limit room_jid, limit, offset
) )
else: else:
rows = await conn.fetch( rows = await conn.fetch(
@@ -294,9 +302,9 @@ class PostgresService:
FROM history FROM history
WHERE user_jid = $1 AND room_jid IS NULL WHERE user_jid = $1 AND room_jid IS NULL
ORDER BY timestamp ASC ORDER BY timestamp ASC
LIMIT $2 LIMIT $2 OFFSET $3
""", """,
user_jid, limit user_jid, limit, offset
) )
return [dict(row) for row in rows] return [dict(row) for row in rows]