78 lines
2.2 KiB
Python
78 lines
2.2 KiB
Python
from fastapi import APIRouter, Depends, status
|
|
|
|
|
|
from app.exceptions import UserDontHavePermissionException, MessageNotFoundException
|
|
from app.users.chat.dao import ChatDAO
|
|
from app.users.chat.shemas import SMessage
|
|
|
|
from app.users.dao import UserDAO
|
|
from app.users.dependencies import get_current_user, validate_user_access_to_chat
|
|
from app.users.models import Users
|
|
|
|
router = APIRouter(
|
|
prefix="/chat",
|
|
tags=["Чат"]
|
|
)
|
|
|
|
|
|
@router.get("")
|
|
async def root(user: Users = Depends(get_current_user)):
|
|
print(user)
|
|
return user.id
|
|
|
|
|
|
@router.post("", status_code=status.HTTP_201_CREATED)
|
|
async def add_message_to_chat(
|
|
chat_id: int,
|
|
message: str,
|
|
image_url: str = None,
|
|
user: Users = Depends(get_current_user)
|
|
):
|
|
send_message_to_chat = await ChatDAO.send_message(
|
|
user_id=user.id,
|
|
chat_id=chat_id,
|
|
message=message,
|
|
image_url=image_url
|
|
)
|
|
|
|
|
|
@router.delete("/delete_message", status_code=status.HTTP_204_NO_CONTENT)
|
|
async def delete_message_from_chat(
|
|
message_id: int,
|
|
user: Users = Depends(get_current_user)
|
|
):
|
|
get_message_sender = await ChatDAO.get_message_by_id(message_id=message_id)
|
|
if get_message_sender is None:
|
|
raise MessageNotFoundException
|
|
if get_message_sender["user_id"] != user.id:
|
|
get_user_role = await UserDAO.get_user_role(user_id=user.id)
|
|
if not get_user_role == 1:
|
|
raise UserDontHavePermissionException
|
|
deleted_message = await ChatDAO.delete_message(message_id=message_id)
|
|
return deleted_message
|
|
|
|
|
|
@router.get("/get_last_message", response_model=SMessage)
|
|
async def get_last_message(chat_id: int, user: Users = Depends(get_current_user)):
|
|
message = dict(await ChatDAO.get_last_message(chat_id=chat_id))
|
|
user_avatar = await UserDAO.get_user_avatar(user_id=user.id)
|
|
message["user_avatar"] = user_avatar
|
|
print(message)
|
|
if message is not None:
|
|
return message
|
|
raise MessageNotFoundException
|
|
|
|
|
|
@router.post("/create_chat")
|
|
async def create_chat(
|
|
user_to_exclude: int,
|
|
user: Users = Depends(get_current_user)
|
|
):
|
|
created_chat = await ChatDAO.create(user_id=user_to_exclude)
|
|
return created_chat
|
|
|
|
@router.get("/last_messages")
|
|
async def get_last_messages():
|
|
pass
|
|
|
|
|