Почистил вебсокет

This commit is contained in:
urec56 2024-07-12 13:34:36 +04:00
parent 9055fe1f29
commit 2b8fb526ac

View file

@ -8,7 +8,7 @@ from app.services.message_service import MessageService
from app.unit_of_work import UnitOfWork
from app.utils.auth import AuthService
from app.chat.router import router
from app.chat.shemas import SSendMessage, SMessage, SDeleteMessage, SEditMessage, SPinMessage, SUnpinMessage
from app.chat.shemas import SSendMessage, SDeleteMessage, SEditMessage, SPinMessage, SUnpinMessage
from app.users.dependencies import get_current_user_ws, get_token, get_subprotocol_ws
from app.users.schemas import SUser
@ -41,33 +41,38 @@ class ConnectionManager:
except KeyError:
raise IncorrectDataException
async def send(self, uow: UnitOfWork, user_id: int, chat_id: int, message: dict) -> dict:
@staticmethod
async def send(uow: UnitOfWork, user_id: int, chat_id: int, message: dict) -> dict:
message = SSendMessage.model_validate(message)
new_message = await self.add_message_to_database(uow=uow, user_id=user_id, chat_id=chat_id, message=message)
new_message = await MessageService.send_message(
uow=uow, user_id=user_id, chat_id=chat_id, message=message, image_url=message.image_url
)
new_message = new_message.model_dump()
new_message["created_at"] = new_message["created_at"].isoformat()
new_message["flag"] = "send"
return new_message
async def delete(self, uow: UnitOfWork, user_id: int, _: int, message: dict) -> dict:
@staticmethod
async def delete(uow: UnitOfWork, user_id: int, _: int, message: dict) -> dict:
message = SDeleteMessage.model_validate(message)
if message.user_id != user_id:
raise UserDontHavePermissionException
await self.delete_message(uow=uow, message_id=message.id)
await MessageService.delete_message(uow=uow, message_id=message.id)
new_message = {"id": message.id, "flag": "delete"}
return new_message
async def edit(self, uow: UnitOfWork, user_id: int, _: int, message: dict) -> dict:
@staticmethod
async def edit(uow: UnitOfWork, user_id: int, _: int, message: dict) -> dict:
message = SEditMessage.model_validate(message)
if message.user_id != user_id:
raise UserDontHavePermissionException
await self.edit_message(
uow=uow, message_id=message.id, new_message=message.new_message, image_url=message.new_image_url
await MessageService.edit_message(
uow=uow, message_id=message.id, new_message=message.new_message, new_image_url=message.new_image_url
)
new_message = {
"flag": "edit",
@ -77,9 +82,10 @@ class ConnectionManager:
}
return new_message
async def pin(self, uow: UnitOfWork, _: int, chat_id: int, message: dict) -> dict:
@staticmethod
async def pin(uow: UnitOfWork, _: int, chat_id: int, message: dict) -> dict:
message = SPinMessage.model_validate(message)
pinned_message = await self.pin_message(
pinned_message = await MessageService.pin_message(
uow=uow, chat_id=chat_id, user_id=message.user_id, message_id=message.id
)
new_message = pinned_message.model_dump()
@ -87,38 +93,13 @@ class ConnectionManager:
new_message["flag"] = "pin"
return new_message
async def unpin(self, uow: UnitOfWork, _: int, chat_id: int, message: dict) -> dict:
@staticmethod
async def unpin(uow: UnitOfWork, _: int, chat_id: int, message: dict) -> dict:
message = SUnpinMessage.model_validate(message)
await self.unpin_message(uow=uow, chat_id=chat_id, message_id=message.id)
await MessageService.unpin_message(uow=uow, chat_id=chat_id, message_id=message.id)
new_message = {"flag": "unpin", "id": message.id}
return new_message
@staticmethod
async def add_message_to_database(uow: UnitOfWork, user_id: int, chat_id: int, message: SSendMessage) -> SMessage:
new_message = await MessageService.send_message(
uow=uow, user_id=user_id, chat_id=chat_id, message=message, image_url=message.image_url
)
return new_message
@staticmethod
async def delete_message(uow: UnitOfWork, message_id: int) -> None:
await MessageService.delete_message(uow=uow, message_id=message_id)
@staticmethod
async def edit_message(uow: UnitOfWork, message_id: int, new_message: str, image_url: str) -> None:
await MessageService.edit_message(
uow=uow, message_id=message_id, new_message=new_message, new_image_url=image_url
)
@staticmethod
async def pin_message(uow: UnitOfWork, chat_id: int, user_id: int, message_id: int) -> SMessage:
pinned_message = await MessageService.pin_message(uow=uow, chat_id=chat_id, user_id=user_id, message_id=message_id)
return pinned_message
@staticmethod
async def unpin_message(uow: UnitOfWork, chat_id: int, message_id: int) -> None:
await MessageService.unpin_message(uow=uow, chat_id=chat_id, message_id=message_id)
manager = ConnectionManager()