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