chat_back/app/services/message_service.py
2024-06-08 17:35:55 +05:00

47 lines
1.6 KiB
Python

from app.chat.shemas import SMessage, SSendMessage
from app.unit_of_work import UnitOfWork
class MessageService:
@staticmethod
async def send_message(
uow: UnitOfWork, user_id: int, chat_id: int, message: SSendMessage, image_url: str | None = None
) -> SMessage:
async with uow:
message_id = await uow.chat.send_message(
user_id=user_id, chat_id=chat_id, message=message.message, image_url=image_url
)
if message.answer:
await uow.chat.add_answer(self_id=message_id, answer_id=message.answer)
new_message = await uow.chat.get_message_by_id(message_id)
await uow.commit()
return new_message
@staticmethod
async def delete_message(uow: UnitOfWork, message_id: int) -> None:
async with uow:
await uow.chat.delete_message(message_id=message_id)
await uow.commit()
@staticmethod
async def edit_message(uow: UnitOfWork, message_id: int, new_message: str, new_image_url: str) -> None:
async with uow:
await uow.chat.edit_message(
message_id=message_id, new_message=new_message, new_image_url=new_image_url
)
await uow.commit()
@staticmethod
async def pin_message(uow: UnitOfWork, chat_id: int, user_id: int, message_id: int) -> SMessage:
async with uow:
pinned_message = await uow.chat.pin_message(chat_id=chat_id, message_id=message_id, user_id=user_id)
await uow.commit()
return pinned_message
@staticmethod
async def unpin_message(uow: UnitOfWork, chat_id: int, message_id: int) -> int:
async with uow:
unpinned_message = await uow.chat.unpin_message(chat_id=chat_id, message_id=message_id)
await uow.commit()
return unpinned_message