1
- from typing import Any , Callable , List , Optional , Type , Union
1
+ from typing import Any , Callable , List , Optional , Type , Union , Coroutine
2
2
3
3
from fastapi import HTTPException
4
4
18
18
else :
19
19
gino_installed = True
20
20
21
+ CALLABLE_SINGLE = Callable [..., Coroutine [Any , Any , Model ]]
22
+ CALLABLE_LIST = Callable [..., Coroutine [Any , Any , List [Model ]]]
23
+
21
24
22
25
class GinoCRUDRouter (CRUDGenerator [SCHEMA ]):
23
26
def __init__ (
@@ -61,7 +64,7 @@ def __init__(
61
64
** kwargs
62
65
)
63
66
64
- def _get_all (self , * args : Any , ** kwargs : Any ) -> Callable [..., List [ Model ]] :
67
+ def _get_all (self , * args : Any , ** kwargs : Any ) -> CALLABLE_LIST :
65
68
async def route (
66
69
pagination : PAGINATION = self .pagination ,
67
70
) -> List [Model ]:
@@ -74,8 +77,8 @@ async def route(
74
77
75
78
return route
76
79
77
- def _get_one (self , * args : Any , ** kwargs : Any ) -> Callable [..., Model ] :
78
- async def route (item_id : self ._pk_type ) -> Model :
80
+ def _get_one (self , * args : Any , ** kwargs : Any ) -> CALLABLE_SINGLE :
81
+ async def route (item_id : self ._pk_type ) -> Model : # type: ignore
79
82
model : Model = await self .db_model .get (item_id )
80
83
81
84
if model :
@@ -85,7 +88,7 @@ async def route(item_id: self._pk_type) -> Model:
85
88
86
89
return route
87
90
88
- def _create (self , * args : Any , ** kwargs : Any ) -> Callable [..., Model ] :
91
+ def _create (self , * args : Any , ** kwargs : Any ) -> CALLABLE_SINGLE :
89
92
async def route (
90
93
model : self .create_schema , # type: ignore
91
94
) -> Model :
@@ -98,7 +101,7 @@ async def route(
98
101
99
102
return route
100
103
101
- def _update (self , * args : Any , ** kwargs : Any ) -> Callable [..., Model ] :
104
+ def _update (self , * args : Any , ** kwargs : Any ) -> CALLABLE_SINGLE :
102
105
async def route (
103
106
item_id : self ._pk_type , # type: ignore
104
107
model : self .update_schema , # type: ignore
@@ -115,14 +118,14 @@ async def route(
115
118
116
119
return route
117
120
118
- def _delete_all (self , * args : Any , ** kwargs : Any ) -> Callable [..., List [ Model ]] :
121
+ def _delete_all (self , * args : Any , ** kwargs : Any ) -> CALLABLE_LIST :
119
122
async def route () -> List [Model ]:
120
123
await self .db_model .delete .gino .status ()
121
124
return await self ._get_all ()(pagination = {"skip" : 0 , "limit" : None })
122
125
123
126
return route
124
127
125
- def _delete_one (self , * args : Any , ** kwargs : Any ) -> Callable [..., Model ] :
128
+ def _delete_one (self , * args : Any , ** kwargs : Any ) -> CALLABLE_SINGLE :
126
129
async def route (item_id : self ._pk_type ) -> Model : # type: ignore
127
130
db_model : Model = await self ._get_one ()(item_id )
128
131
await db_model .delete ()
0 commit comments