3
3
from typing import Any
4
4
5
5
from fastapi import HTTPException
6
+ from starlette .background import BackgroundTask
6
7
7
8
from backend .app .common .response .response_code import CustomCode
8
9
9
10
10
11
class BaseExceptionMixin (Exception ):
11
12
code : int
12
13
13
- def __init__ (self , * , msg : str = None , data : Any = None ):
14
+ def __init__ (self , * , msg : str = None , data : Any = None , background : BackgroundTask | None = None ):
14
15
self .msg = msg
15
16
self .data = data
17
+ # The original background task: https://www.starlette.io/background/
18
+ self .background = background
16
19
17
20
18
21
class HTTPError (HTTPException ):
@@ -21,51 +24,53 @@ def __init__(self, *, code: int, msg: Any = None, headers: dict[str, Any] | None
21
24
22
25
23
26
class CustomError (BaseExceptionMixin ):
24
- def __init__ (self , * , error : CustomCode , data : Any = None ):
27
+ def __init__ (self , * , error : CustomCode , data : Any = None , background : BackgroundTask | None = None ):
25
28
self .code = error .code
26
- super ().__init__ (msg = error .msg , data = data )
29
+ super ().__init__ (msg = error .msg , data = data , background = background )
27
30
28
31
29
32
class RequestError (BaseExceptionMixin ):
30
33
code = 400
31
34
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 )
34
37
35
38
36
39
class ForbiddenError (BaseExceptionMixin ):
37
40
code = 403
38
41
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 )
41
44
42
45
43
46
class NotFoundError (BaseExceptionMixin ):
44
47
code = 404
45
48
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 )
48
51
49
52
50
53
class ServerError (BaseExceptionMixin ):
51
54
code = 500
52
55
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 )
55
60
56
61
57
62
class GatewayError (BaseExceptionMixin ):
58
63
code = 502
59
64
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 )
62
67
63
68
64
69
class AuthorizationError (BaseExceptionMixin ):
65
70
code = 401
66
71
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 )
69
74
70
75
71
76
class TokenError (HTTPError ):
0 commit comments