from fastapi import HTTPException, status


# Базовое исключение
class BlackPhoenixException(HTTPException):
    status_code = 500
    detail = ""

    def __init__(self):
        super().__init__(status_code=self.status_code, detail=self.detail)


class UserAlreadyExistsException(BlackPhoenixException):
    status_code = status.HTTP_409_CONFLICT
    detail = "Пользователь с таким ником или почтой уже существует"


class UsernameAlreadyInUseException(BlackPhoenixException):
    status_code = status.HTTP_409_CONFLICT
    detail = "Ник занят"


class IncorrectAuthDataException(BlackPhoenixException):
    status_code = status.HTTP_401_UNAUTHORIZED
    detail = "Введены не верные данные"


class IncorrectTokenFormatException(BlackPhoenixException):
    status_code = status.HTTP_401_UNAUTHORIZED
    detail = "Некорректный формат токена"


class TokenAbsentException(BlackPhoenixException):
    status_code = status.HTTP_401_UNAUTHORIZED
    detail = "Токен отсутствует"


class TokenExpiredException(BlackPhoenixException):
    status_code = status.HTTP_401_UNAUTHORIZED
    detail = "Токен истёк"


class UserIsNotPresentException(BlackPhoenixException):
    status_code = status.HTTP_401_UNAUTHORIZED


class UserDontHavePermissionException(BlackPhoenixException):
    status_code = status.HTTP_409_CONFLICT
    detail = "У вас нет прав для этого действия"


class MessageNotFoundException(BlackPhoenixException):
    status_code = status.HTTP_404_NOT_FOUND
    detail = "Сообщение не найдено"


class IncorrectPasswordException(BlackPhoenixException):
    status_code = status.HTTP_409_CONFLICT
    detail = "Введён не верный пароль"


class PasswordsМismatchException(BlackPhoenixException):
    status_code = status.HTTP_409_CONFLICT
    detail = "Пароли не совпадают"


class UsersIdIsTheSameException(BlackPhoenixException):
    status_code = status.HTTP_409_CONFLICT
    detail = "Айди юзеров совпадают"
