diff --git a/app/chat/shemas.py b/app/chat/shemas.py index c01f016..e3b3d18 100644 --- a/app/chat/shemas.py +++ b/app/chat/shemas.py @@ -15,6 +15,7 @@ class SMessage(BaseModel): created_at: datetime avatar_image: str answer_id: int | None + # answer_message: str | None class SMessageList(BaseModel): diff --git a/app/dao/chat.py b/app/dao/chat.py index 5c2e4f3..c8b8629 100644 --- a/app/dao/chat.py +++ b/app/dao/chat.py @@ -50,6 +50,34 @@ class ChatDAO(BaseDAO): return result.scalar() async def get_message_by_id(self, message_id: int): + + # query = ( + # select( + # func.json_build_object( + # "id", Message.id, + # "message", Message.message, + # "image_url", Message.image_url, + # "chat_id", Message.chat_id, + # "user_id", Message.user_id, + # "created_at", Message.created_at, + # "avatar_image", Users.avatar_image, + # "username", Users.username, + # "answer_id", MessageAnswer.answer_id, + # "answer_message", select( + # Message.message + # ) + # .select_from(MessageAnswer) + # .join(Message, Message.id == MessageAnswer.answer_id, isouter=True) + # .where(Message.id == answer_id) + # .scalar_subquery() + # ) + # ) + # .select_from(Message) + # .join(Users, Users.id == Message.user_id) + # .join(MessageAnswer, MessageAnswer.self_id == Message.id, isouter=True) + # .where(Message.id == self_id) + # ) + query = ( select( Message.id, @@ -152,7 +180,9 @@ class ChatDAO(BaseDAO): "answer_message", select( Message.message ) - .where(Message.id == answer_id) + .select_from(MessageAnswer) + .join(Message, Message.id == MessageAnswer.answer_id, isouter=True) + .where(MessageAnswer.self_id == self_id) .scalar_subquery() ) )