Редактировать postgres_service.py
This commit is contained in:
@@ -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]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user