33from typing import Any
44
55from fastapi import HTTPException
6+ from starlette .background import BackgroundTask
67
78from backend .app .common .response .response_code import CustomCode
89
910
1011class BaseExceptionMixin (Exception ):
1112 code : int
1213
13- def __init__ (self , * , msg : str = None , data : Any = None ):
14+ def __init__ (self , * , msg : str = None , data : Any = None , background : BackgroundTask | None = None ):
1415 self .msg = msg
1516 self .data = data
17+ # The original background task: https://www.starlette.io/background/
18+ self .background = background
1619
1720
1821class HTTPError (HTTPException ):
@@ -21,51 +24,53 @@ def __init__(self, *, code: int, msg: Any = None, headers: dict[str, Any] | None
2124
2225
2326class CustomError (BaseExceptionMixin ):
24- def __init__ (self , * , error : CustomCode , data : Any = None ):
27+ def __init__ (self , * , error : CustomCode , data : Any = None , background : BackgroundTask | None = None ):
2528 self .code = error .code
26- super ().__init__ (msg = error .msg , data = data )
29+ super ().__init__ (msg = error .msg , data = data , background = background )
2730
2831
2932class RequestError (BaseExceptionMixin ):
3033 code = 400
3134
32- def __init__ (self , * , msg : str = 'Bad Request' , data : Any = None ):
33- super ().__init__ (msg = msg , data = data )
35+ def __init__ (self , * , msg : str = 'Bad Request' , data : Any = None , background : BackgroundTask | None = None ):
36+ super ().__init__ (msg = msg , data = data , background = background )
3437
3538
3639class ForbiddenError (BaseExceptionMixin ):
3740 code = 403
3841
39- def __init__ (self , * , msg : str = 'Forbidden' , data : Any = None ):
40- super ().__init__ (msg = msg , data = data )
42+ def __init__ (self , * , msg : str = 'Forbidden' , data : Any = None , background : BackgroundTask | None = None ):
43+ super ().__init__ (msg = msg , data = data , background = background )
4144
4245
4346class NotFoundError (BaseExceptionMixin ):
4447 code = 404
4548
46- def __init__ (self , * , msg : str = 'Not Found' , data : Any = None ):
47- super ().__init__ (msg = msg , data = data )
49+ def __init__ (self , * , msg : str = 'Not Found' , data : Any = None , background : BackgroundTask | None = None ):
50+ super ().__init__ (msg = msg , data = data , background = background )
4851
4952
5053class ServerError (BaseExceptionMixin ):
5154 code = 500
5255
53- def __init__ (self , * , msg : str = 'Internal Server Error' , data : Any = None ):
54- super ().__init__ (msg = msg , data = data )
56+ def __init__ (
57+ self , * , msg : str = 'Internal Server Error' , data : Any = None , background : BackgroundTask | None = None
58+ ):
59+ super ().__init__ (msg = msg , data = data , background = background )
5560
5661
5762class GatewayError (BaseExceptionMixin ):
5863 code = 502
5964
60- def __init__ (self , * , msg : str = 'Bad Gateway' , data : Any = None ):
61- super ().__init__ (msg = msg , data = data )
65+ def __init__ (self , * , msg : str = 'Bad Gateway' , data : Any = None , background : BackgroundTask | None = None ):
66+ super ().__init__ (msg = msg , data = data , background = background )
6267
6368
6469class AuthorizationError (BaseExceptionMixin ):
6570 code = 401
6671
67- def __init__ (self , * , msg : str = 'Permission denied' , data : Any = None ):
68- super ().__init__ (msg = msg , data = data )
72+ def __init__ (self , * , msg : str = 'Permission denied' , data : Any = None , background : BackgroundTask | None = None ):
73+ super ().__init__ (msg = msg , data = data , background = background )
6974
7075
7176class TokenError (HTTPError ):
0 commit comments