feat: initialize aivideo project

This commit is contained in:
2026-04-17 18:33:05 +08:00
commit 14b18d67fe
162 changed files with 26251 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
class AppError(Exception):
def __init__(
self,
message: str,
*,
code: int,
status_code: int,
errors: list[dict] | None = None,
) -> None:
super().__init__(message)
self.message = message
self.code = code
self.status_code = status_code
self.errors = errors or []
class AuthenticationError(AppError):
def __init__(self, message: str = "unauthorized") -> None:
super().__init__(message, code=10001, status_code=401)
class AuthorizationError(AppError):
def __init__(self, message: str = "forbidden") -> None:
super().__init__(message, code=10002, status_code=403)
class ValidationAppError(AppError):
def __init__(self, message: str, errors: list[dict] | None = None) -> None:
super().__init__(message, code=10003, status_code=422, errors=errors)
class NotFoundAppError(AppError):
def __init__(self, message: str, *, code: int = 40400) -> None:
super().__init__(message, code=code, status_code=404)
class ConflictAppError(AppError):
def __init__(self, message: str, *, code: int = 40900) -> None:
super().__init__(message, code=code, status_code=409)
class BusinessAppError(AppError):
def __init__(self, message: str, *, code: int, status_code: int = 400) -> None:
super().__init__(message, code=code, status_code=status_code)