|
|
|
@@ -46,6 +46,8 @@ class MessageService: |
|
|
|
app_model=app_model, user=user, conversation_id=conversation_id |
|
|
|
) |
|
|
|
|
|
|
|
fetch_limit = limit + 1 |
|
|
|
|
|
|
|
if first_id: |
|
|
|
first_message = ( |
|
|
|
db.session.query(Message) |
|
|
|
@@ -64,7 +66,7 @@ class MessageService: |
|
|
|
Message.id != first_message.id, |
|
|
|
) |
|
|
|
.order_by(Message.created_at.desc()) |
|
|
|
.limit(limit) |
|
|
|
.limit(fetch_limit) |
|
|
|
.all() |
|
|
|
) |
|
|
|
else: |
|
|
|
@@ -72,25 +74,14 @@ class MessageService: |
|
|
|
db.session.query(Message) |
|
|
|
.filter(Message.conversation_id == conversation.id) |
|
|
|
.order_by(Message.created_at.desc()) |
|
|
|
.limit(limit) |
|
|
|
.limit(fetch_limit) |
|
|
|
.all() |
|
|
|
) |
|
|
|
|
|
|
|
has_more = False |
|
|
|
if len(history_messages) == limit: |
|
|
|
current_page_first_message = history_messages[-1] |
|
|
|
rest_count = ( |
|
|
|
db.session.query(Message) |
|
|
|
.filter( |
|
|
|
Message.conversation_id == conversation.id, |
|
|
|
Message.created_at < current_page_first_message.created_at, |
|
|
|
Message.id != current_page_first_message.id, |
|
|
|
) |
|
|
|
.count() |
|
|
|
) |
|
|
|
|
|
|
|
if rest_count > 0: |
|
|
|
has_more = True |
|
|
|
if len(history_messages) > limit: |
|
|
|
has_more = True |
|
|
|
history_messages = history_messages[:-1] |
|
|
|
|
|
|
|
if order == "asc": |
|
|
|
history_messages = list(reversed(history_messages)) |
|
|
|
@@ -112,6 +103,8 @@ class MessageService: |
|
|
|
|
|
|
|
base_query = db.session.query(Message) |
|
|
|
|
|
|
|
fetch_limit = limit + 1 |
|
|
|
|
|
|
|
if conversation_id is not None: |
|
|
|
conversation = ConversationService.get_conversation( |
|
|
|
app_model=app_model, user=user, conversation_id=conversation_id |
|
|
|
@@ -131,21 +124,16 @@ class MessageService: |
|
|
|
history_messages = ( |
|
|
|
base_query.filter(Message.created_at < last_message.created_at, Message.id != last_message.id) |
|
|
|
.order_by(Message.created_at.desc()) |
|
|
|
.limit(limit) |
|
|
|
.limit(fetch_limit) |
|
|
|
.all() |
|
|
|
) |
|
|
|
else: |
|
|
|
history_messages = base_query.order_by(Message.created_at.desc()).limit(limit).all() |
|
|
|
history_messages = base_query.order_by(Message.created_at.desc()).limit(fetch_limit).all() |
|
|
|
|
|
|
|
has_more = False |
|
|
|
if len(history_messages) == limit: |
|
|
|
current_page_first_message = history_messages[-1] |
|
|
|
rest_count = base_query.filter( |
|
|
|
Message.created_at < current_page_first_message.created_at, Message.id != current_page_first_message.id |
|
|
|
).count() |
|
|
|
|
|
|
|
if rest_count > 0: |
|
|
|
has_more = True |
|
|
|
if len(history_messages) > limit: |
|
|
|
has_more = True |
|
|
|
history_messages = history_messages[:-1] |
|
|
|
|
|
|
|
return InfiniteScrollPagination(data=history_messages, limit=limit, has_more=has_more) |
|
|
|
|