|
|
|
|
@ -22,7 +22,7 @@ from fields.conversation_fields import (
|
|
|
|
|
)
|
|
|
|
|
from libs.helper import datetime_string
|
|
|
|
|
from libs.login import login_required
|
|
|
|
|
from models.model import AppMode, Conversation, Message, MessageAnnotation
|
|
|
|
|
from models.model import AppMode, Conversation, EndUser, Message, MessageAnnotation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CompletionConversationApi(Resource):
|
|
|
|
|
@ -156,19 +156,31 @@ class ChatConversationApi(Resource):
|
|
|
|
|
parser.add_argument('limit', type=int_range(1, 100), required=False, default=20, location='args')
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
|
|
|
|
subquery = (
|
|
|
|
|
db.session.query(
|
|
|
|
|
Conversation.id.label('conversation_id'),
|
|
|
|
|
EndUser.session_id.label('from_end_user_session_id')
|
|
|
|
|
)
|
|
|
|
|
.outerjoin(EndUser, Conversation.from_end_user_id == EndUser.id)
|
|
|
|
|
.subquery()
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
query = db.select(Conversation).where(Conversation.app_id == app_model.id)
|
|
|
|
|
|
|
|
|
|
if args['keyword']:
|
|
|
|
|
keyword_filter = '%{}%'.format(args['keyword'])
|
|
|
|
|
query = query.join(
|
|
|
|
|
Message, Message.conversation_id == Conversation.id
|
|
|
|
|
Message, Message.conversation_id == Conversation.id,
|
|
|
|
|
).join(
|
|
|
|
|
subquery, subquery.c.conversation_id == Conversation.id
|
|
|
|
|
).filter(
|
|
|
|
|
or_(
|
|
|
|
|
Message.query.ilike('%{}%'.format(args['keyword'])),
|
|
|
|
|
Message.answer.ilike('%{}%'.format(args['keyword'])),
|
|
|
|
|
Conversation.name.ilike('%{}%'.format(args['keyword'])),
|
|
|
|
|
Conversation.introduction.ilike('%{}%'.format(args['keyword'])),
|
|
|
|
|
Message.query.ilike(keyword_filter),
|
|
|
|
|
Message.answer.ilike(keyword_filter),
|
|
|
|
|
Conversation.name.ilike(keyword_filter),
|
|
|
|
|
Conversation.introduction.ilike(keyword_filter),
|
|
|
|
|
subquery.c.from_end_user_session_id.ilike(keyword_filter)
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
account = current_user
|
|
|
|
|
|