fastgenerateapi 1.2.5__tar.gz → 1.2.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/PKG-INFO +1 -1
  2. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/__version__.py +1 -1
  3. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/base_view.py +5 -16
  4. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/create_view.py +5 -5
  5. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/delete_filter_view.py +5 -5
  6. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/delete_tree_view.py +5 -5
  7. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/delete_view.py +5 -18
  8. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/get_all_view.py +16 -8
  9. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/get_one_view.py +6 -5
  10. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/get_relation_view.py +5 -4
  11. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/get_tree_view.py +5 -4
  12. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/base_mixin.py +0 -5
  13. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/get_mixin.py +1 -1
  14. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/update_relation_view.py +5 -5
  15. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/update_view.py +5 -4
  16. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/router_controller.py +5 -38
  17. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/ws_controller.py +3 -13
  18. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/deps/filter_params_deps.py +24 -0
  19. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/example/views.py +0 -4
  20. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/create_schema_factory.py +36 -24
  21. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/get_all_schema_factory.py +44 -29
  22. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/get_one_schema_factory.py +44 -26
  23. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/update_schema_factory.py +34 -24
  24. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/all_settings.py +6 -4
  25. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi.egg-info/PKG-INFO +1 -1
  26. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/LICENSE +0 -0
  27. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/README.md +0 -0
  28. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/__init__.py +0 -0
  29. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/__init__.py +0 -0
  30. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/api_view.py +0 -0
  31. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/__init__.py +0 -0
  32. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/dbmodel_mixin.py +0 -0
  33. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/response_mixin.py +0 -0
  34. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/save_mixin.py +0 -0
  35. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/tool_mixin.py +0 -0
  36. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/__init__.py +0 -0
  37. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/docx_util.py +0 -0
  38. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/file_util.py +0 -0
  39. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/pdf_util.py +0 -0
  40. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/xlsx_util.py +0 -0
  41. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/zip_util.py +0 -0
  42. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/sql_get_view.py +0 -0
  43. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/switch_view.py +0 -0
  44. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/cache/__init__.py +0 -0
  45. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/cache/cache_decorator.py +0 -0
  46. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/cache/key_builder.py +0 -0
  47. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/channel/__init__.py +0 -0
  48. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/channel/connection_manager.py +0 -0
  49. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/channel/consumer.py +0 -0
  50. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/channel/websocket_view.py +0 -0
  51. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/__init__.py +0 -0
  52. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/filter_controller.py +0 -0
  53. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/rpc_controller.py +0 -0
  54. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/search_controller.py +0 -0
  55. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/data_type/__init__.py +0 -0
  56. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/data_type/data_type.py +0 -0
  57. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/data_type/mysql_data_type.py +0 -0
  58. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/deps/__init__.py +0 -0
  59. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/deps/paginator_deps.py +0 -0
  60. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/deps/tree_params_deps.py +0 -0
  61. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/example/__init__.py +0 -0
  62. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/example/models.py +0 -0
  63. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/example/routers.py +0 -0
  64. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/example/schemas.py +0 -0
  65. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/__init__.py +0 -0
  66. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/all.py +0 -0
  67. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/param_utils.py +0 -0
  68. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/response_utils.py +0 -0
  69. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/tortoise_utils.py +0 -0
  70. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/model/__init__.py +0 -0
  71. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/model/base_model.py +0 -0
  72. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/__init__.py +0 -0
  73. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/aes_field.py +0 -0
  74. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/enum_field.py +0 -0
  75. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/pk_field.py +0 -0
  76. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/pwd_field.py +0 -0
  77. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/soft_delete_field.py +0 -0
  78. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/validator.py +0 -0
  79. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/pydantic_utils/__init__.py +0 -0
  80. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/pydantic_utils/base_model.py +0 -0
  81. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/pydantic_utils/base_settings.py +0 -0
  82. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/pydantic_utils/json_encoders.py +0 -0
  83. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/__init__.py +0 -0
  84. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/common_function.py +0 -0
  85. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/common_schema_factory.py +0 -0
  86. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/filter_schema_factory.py +0 -0
  87. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/get_relation_schema_factory.py +0 -0
  88. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/get_tree_schema_factory.py +0 -0
  89. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/response_factory.py +0 -0
  90. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/sql_get_all_schema_factory.py +0 -0
  91. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/__init__.py +0 -0
  92. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/app_settings.py +0 -0
  93. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/db_settings.py +0 -0
  94. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/etcd_settings.py +0 -0
  95. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/file_settings.py +0 -0
  96. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/jwt_settings.py +0 -0
  97. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/otlp_settings.py +0 -0
  98. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/redis_settings.py +0 -0
  99. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/sms_settings.py +0 -0
  100. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/system_settings.py +0 -0
  101. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/__init__.py +0 -0
  102. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/aes.py +0 -0
  103. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/auto_discover.py +0 -0
  104. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/exception.py +0 -0
  105. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/file_utils.py +0 -0
  106. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/pwd_utils.py +0 -0
  107. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/ramdom_utils.py +0 -0
  108. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/snowflake.py +0 -0
  109. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/str_util.py +0 -0
  110. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/swagger_to_js.py +0 -0
  111. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi.egg-info/SOURCES.txt +0 -0
  112. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi.egg-info/dependency_links.txt +0 -0
  113. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/fastgenerateapi.egg-info/top_level.txt +0 -0
  114. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/script/__init__.py +0 -0
  115. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/setup.cfg +0 -0
  116. {fastgenerateapi-1.2.5 → fastgenerateapi-1.2.7}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastgenerateapi
3
- Version: 1.2.5
3
+ Version: 1.2.7
4
4
  Summary: FastAPIView Class View
5
5
  Author: ShiLiang
6
6
  Author-email: 2509144896@qq.com
@@ -8,7 +8,7 @@
8
8
  # d8888P
9
9
 
10
10
 
11
- VERSION = (1, 2, 5)
11
+ VERSION = (1, 2, 7)
12
12
 
13
13
  __version__ = '.'.join(map(str, VERSION))
14
14
 
@@ -29,7 +29,7 @@ class BaseView(BaseMixin, ResponseMixin, ToolMixin, DBModelMixin):
29
29
  schema: Optional[Type[BaseModel]] = None # 返回序列化[未使用]
30
30
  dependencies: Optional[Sequence[params.Depends]] = None
31
31
  tags: Optional[List[str]] = None # swagger标签
32
- router_args: Dict[str, any] = None
32
+ check_ignore_error_fields: List[str] = None # 检查唯一字段报错时,不展示这个字段
33
33
 
34
34
  """
35
35
  # 增加外键字段显示
@@ -38,20 +38,6 @@ class BaseView(BaseMixin, ResponseMixin, ToolMixin, DBModelMixin):
38
38
  "avatar": ["id", ("url", "avatar_url")] # 增加 avatar_id,avatar_url2个字段
39
39
  }
40
40
  is_with_prefetch: 是否带有列表的prefetch_related_fields
41
-
42
- # router_args: List[Union[str, tuple, BaseRouterSummary]] = None
43
- # 给函数设置路由以及其他参数
44
- # key为方法名,例如:"get_one", "view_get_data"
45
- router_args = {
46
- "get_one": {
47
- "response_model": CommonResponse;
48
- "summary": "备注",
49
- "dependencies": ["依赖函数"],
50
- }
51
- // 或者 "get_one": CommonResponse,
52
- // 或者 "get_one": "备注",
53
- // 或者 "get_one": ["依赖函数"],
54
- }
55
41
  """
56
42
 
57
43
  @property
@@ -162,13 +148,15 @@ class BaseView(BaseMixin, ResponseMixin, ToolMixin, DBModelMixin):
162
148
  cls,
163
149
  data_dict: dict,
164
150
  model_class: Type[Model],
165
- model: Union[Model, None] = None
151
+ model: Union[Model, None] = None,
152
+ check_ignore_error_fields: List[str] = None,
166
153
  ):
167
154
  """
168
155
  校验模型中设置了 唯一索引和联合唯一索引 的字段
169
156
  :param data_dict: 修改或创建的数据字典
170
157
  :param model_class: 数据库模型
171
158
  :param model: 修改前的数据,用于判断是否修改了字段,当唯一字段与数据data_dict一致时,不会做校验
159
+ :param check_ignore_error_fields: 错误提示忽略字段,会合并类上的字段
172
160
  :return:
173
161
  """
174
162
  check_unique_fields = cls._get_unique_fields(model_class)
@@ -204,6 +192,7 @@ class BaseView(BaseMixin, ResponseMixin, ToolMixin, DBModelMixin):
204
192
  continue
205
193
 
206
194
  if await model_class.filter(**filter_fields).first():
195
+ ignore_error_field_list = check_ignore_error_fields or []
207
196
  if settings.app_settings.WHETHER_DELETE_FIELD in description_fields:
208
197
  description_fields.remove(settings.app_settings.WHETHER_DELETE_FIELD)
209
198
  return cls.error(
@@ -20,7 +20,7 @@ from fastgenerateapi.settings.all_settings import settings
20
20
 
21
21
 
22
22
  class CreateView(BaseView, SaveMixin):
23
-
23
+ create_summary: Optional[str] = None
24
24
  create_route: Union[bool, DEPENDENCIES] = True
25
25
  create_schema: Optional[Type[BaseModel]] = None
26
26
  create_response_schema: Optional[Type[BaseModel]] = None
@@ -116,16 +116,16 @@ class CreateView(BaseView, SaveMixin):
116
116
  else:
117
117
  self.create_response_schema_factory = self.gen_get_one_response_schema_factory()
118
118
  self.create_response_schema = self.get_one_schema
119
-
120
- doc = self.create.__doc__
121
- summary = doc.strip().split("\n")[0] if doc else f"Create"
119
+ if not self.create_summary:
120
+ doc = self.create.__doc__
121
+ self.create_summary = doc.strip().split("\n")[0] if doc else f"Create"
122
122
  path = f"/{settings.app_settings.ROUTER_CREATE_SUFFIX_FIELD}" if settings.app_settings.ROUTER_WHETHER_ADD_SUFFIX else ""
123
123
  self._add_api_route(
124
124
  path=path,
125
125
  endpoint=self._create_decorator(),
126
126
  methods=["POST"],
127
127
  response_model=self.create_response_schema_factory, # type: ignore
128
- summary=summary,
128
+ summary=self.create_summary,
129
129
  dependencies=self.create_route,
130
130
  )
131
131
 
@@ -17,7 +17,7 @@ from fastgenerateapi.settings.all_settings import settings
17
17
 
18
18
 
19
19
  class DeleteFilterView(BaseView):
20
-
20
+ delete_filter_summary: Optional[str] = None
21
21
  delete_filter_route: Union[bool, DEPENDENCIES] = True
22
22
  delete_filter_response_schema: Optional[Type[BaseModel]] = None
23
23
  """
@@ -64,16 +64,16 @@ class DeleteFilterView(BaseView):
64
64
  self.delete_filter_response_schema = func_type
65
65
  if self.delete_filter_response_schema:
66
66
  self.delete_filter_response_schema_factory = response_factory(self.delete_filter_response_schema, name="DeleteFilter")
67
-
68
- doc = self.destroy_filter.__doc__
69
- summary = doc.strip().split("\n")[0] if doc else "Delete Filter"
67
+ if not self.delete_filter_summary:
68
+ doc = self.destroy_filter.__doc__
69
+ self.delete_filter_summary = doc.strip().split("\n")[0] if doc else "Delete Filter"
70
70
  path = f"/{settings.app_settings.ROUTER_FILTER_DELETE_SUFFIX_FIELD}" if settings.app_settings.ROUTER_WHETHER_ADD_SUFFIX else ""
71
71
  self._add_api_route(
72
72
  path=path,
73
73
  endpoint=self._delete_filter_decorator(),
74
74
  methods=["DELETE"],
75
75
  response_model=self.delete_filter_response_schema_factory,
76
- summary=summary,
76
+ summary=self.delete_filter_summary,
77
77
  dependencies=self.delete_filter_route,
78
78
  )
79
79
 
@@ -18,7 +18,7 @@ from fastgenerateapi.settings.all_settings import settings
18
18
 
19
19
 
20
20
  class DeleteTreeView(BaseView):
21
-
21
+ delete_tree_summary: Optional[str] = None
22
22
  delete_tree_route: Union[bool, DEPENDENCIES] = True
23
23
  delete_tree_schema: Optional[Type[BaseModel]] = IdList
24
24
  delete_tree_response_schema: Optional[Type[BaseModel]] = None
@@ -89,16 +89,16 @@ class DeleteTreeView(BaseView):
89
89
  self.delete_tree_response_schema = func_type
90
90
  if self.delete_tree_response_schema:
91
91
  self.delete_tree_response_schema_factory = response_factory(self.delete_tree_response_schema, name="DeleteTree")
92
-
93
- doc = self.destroy_tree.__doc__
94
- summary = doc.strip().split("\n")[0] if doc else "Delete Tree"
92
+ if not self.delete_tree_summary:
93
+ doc = self.destroy_tree.__doc__
94
+ self.delete_tree_summary = doc.strip().split("\n")[0] if doc else "Delete Tree"
95
95
  path = f"/{settings.app_settings.ROUTER_RECURSION_DELETE_SUFFIX_FIELD}" if settings.app_settings.ROUTER_WHETHER_ADD_SUFFIX else ""
96
96
  self._add_api_route(
97
97
  path=path,
98
98
  endpoint=self._delete_tree_decorator(),
99
99
  methods=["DELETE"],
100
100
  response_model=self.delete_tree_response_schema_factory,
101
- summary=summary,
101
+ summary=self.delete_tree_summary,
102
102
  dependencies=self.delete_tree_route,
103
103
  )
104
104
 
@@ -18,7 +18,7 @@ from fastgenerateapi.settings.all_settings import settings
18
18
 
19
19
 
20
20
  class DeleteView(BaseView):
21
-
21
+ delete_summary: Optional[str] = None
22
22
  delete_route: Union[bool, DEPENDENCIES] = True
23
23
  delete_schema: Optional[Type[BaseModel]] = IdList
24
24
  delete_response_schema: Optional[Type[BaseModel]] = IdList
@@ -35,19 +35,6 @@ class DeleteView(BaseView):
35
35
 
36
36
  return
37
37
 
38
- # 弃用思路:唯一字段加时间戳
39
- # if unique_fields := self._get_unique_fields(self.model_class):
40
- # for model in await queryset:
41
- # model.is_active = False
42
- # for field in unique_fields:
43
- # try:
44
- # setattr(model, field, getattr(model, field) + f"__{int(time.time() * 1000)}")
45
- # except Exception as e:
46
- # setattr(model, field, getattr(model, field) + f"__{int(time.time() * 1000)}")
47
- # await model.save()
48
- # else:
49
- # await queryset.update(is_active=False)
50
-
51
38
  async def get_del_queryset(self, request_data, *args, **kwargs):
52
39
  queryset = self.queryset.filter(id__in=request_data.id_list)
53
40
  return queryset
@@ -80,16 +67,16 @@ class DeleteView(BaseView):
80
67
  self.delete_response_schema = func_type
81
68
  if self.delete_response_schema:
82
69
  self.delete_response_schema_factory = response_factory(self.delete_response_schema, name="Delete")
83
-
84
- doc = self.destroy.__doc__
85
- summary = doc.strip().split("\n")[0] if doc else "Delete All"
70
+ if not self.delete_summary:
71
+ doc = self.destroy.__doc__
72
+ summary = doc.strip().split("\n")[0] if doc else "Delete All"
86
73
  path = f"/{settings.app_settings.ROUTER_DELETE_SUFFIX_FIELD}" if settings.app_settings.ROUTER_WHETHER_ADD_SUFFIX else ""
87
74
  self._add_api_route(
88
75
  path=path,
89
76
  endpoint=self._delete_decorator(),
90
77
  methods=["DELETE"],
91
78
  response_model=self.delete_response_schema_factory,
92
- summary=summary,
79
+ summary=self.delete_summary,
93
80
  dependencies=self.delete_route,
94
81
  )
95
82
 
@@ -20,7 +20,7 @@ from fastgenerateapi.cache.key_builder import generate_key_builder
20
20
  from fastgenerateapi.controller import SearchController, BaseFilter, FilterController
21
21
  from fastgenerateapi.data_type.data_type import DEPENDENCIES, PYDANTIC_SCHEMA
22
22
  from fastgenerateapi.deps import paginator_deps, filter_params_deps
23
- from fastgenerateapi.deps.filter_params_deps import search_params_deps
23
+ from fastgenerateapi.deps.filter_params_deps import search_params_deps, extra_filter_params_deps
24
24
  from fastgenerateapi.schemas_factory import get_all_schema_factory, get_page_schema_factory, get_one_schema_factory, \
25
25
  response_factory
26
26
  from fastgenerateapi.schemas_factory.get_all_schema_factory import get_list_schema_factory, hasattr_get_all_schema
@@ -28,11 +28,13 @@ from fastgenerateapi.settings.all_settings import settings
28
28
 
29
29
 
30
30
  class GetAllView(BaseView, GetMixin):
31
+ get_all_summary: Optional[str] = None
31
32
  get_all_route: Union[bool, DEPENDENCIES] = True
32
33
  get_all_schema: Optional[Type[PYDANTIC_SCHEMA]] = None
33
34
  search_fields: Union[None, list] = None
34
- filter_schema: Optional[Type[PYDANTIC_SCHEMA]] = None
35
35
  filter_fields: Union[None, list] = None
36
+ filter_schema: Optional[Type[PYDANTIC_SCHEMA]] = None
37
+ extra_filter_schema: Optional[Type[PYDANTIC_SCHEMA]] = None
36
38
  order_by_fields: Union[None, list] = None
37
39
  auto_add_id_order: bool = True
38
40
  """
@@ -46,6 +48,9 @@ class GetAllView(BaseView, GetMixin):
46
48
  example:("name__contains", str, "name") 类型是str的时候可以省略,没有第三个值时,自动双下划线转单下划线
47
49
  filter_fields: 筛选对应字段
48
50
  example: name__contains or (create_at__gt, datetime) or (create_at__gt, datetime, create_time)
51
+ filter_schema: 筛选对应字段
52
+ 与filter_fields结果合并,存在相同值时,filter_schema覆盖filter_fields
53
+ extra_filter_schema: 不用于筛选,可用于返回值判断
49
54
  order_by_fields: 排序对应字段
50
55
  auto_add_id_order: 是否自动在 order_by_fields 后面追加id排序
51
56
  """
@@ -78,7 +83,7 @@ class GetAllView(BaseView, GetMixin):
78
83
  """
79
84
  return queryset
80
85
 
81
- async def set_get_all_model(self, model: Model) -> Model:
86
+ async def set_get_all_model(self, model: Model, *args, **kwargs) -> Model:
82
87
  """
83
88
  对于查询的model,展示数据处理
84
89
  """
@@ -110,8 +115,8 @@ class GetAllView(BaseView, GetMixin):
110
115
  await self.setattr_model(model, prefetch_related_fields=self.prefetch_related_fields, *args, **kwargs)
111
116
 
112
117
  # await self.setattr_model_rpc(self.rpc_class, model, self.rpc_param)
113
- model = await self.set_get_model(model)
114
- model = await self.set_get_all_model(model)
118
+ model = await self.set_get_model(model, *args, **kwargs)
119
+ model = await self.set_get_all_model(model, *args, **kwargs)
115
120
 
116
121
  if schema:
117
122
  data_list.append(schema.from_orm(model))
@@ -150,12 +155,14 @@ class GetAllView(BaseView, GetMixin):
150
155
  paginator = Depends(paginator_deps()),
151
156
  search: Optional[str] = Depends(search_params_deps(self.search_fields)),
152
157
  filters: dict = Depends(filter_params_deps(model_class=self.model_class, fields=self.filter_fields, schema=self.filter_schema)),
158
+ extra_filters: dict = Depends(extra_filter_params_deps(schema=self.extra_filter_schema)),
153
159
  token: Optional[str] = Depends(OAuth2PasswordBearer(tokenUrl="token", auto_error=False)),
154
160
  ) -> JSONResponse:
155
161
  data = await self.get_all(
156
162
  paginator=paginator,
157
163
  search=search,
158
164
  filters=filters,
165
+ extra_filters=extra_filters,
159
166
  request=request,
160
167
  token=token,
161
168
  *args,
@@ -191,14 +198,15 @@ class GetAllView(BaseView, GetMixin):
191
198
  self.get_page_schema = get_page_schema_factory(self.get_all_schema)
192
199
  self.get_list_schema = get_list_schema_factory(self.get_all_schema)
193
200
  self.get_all_response_schema_factory = response_factory(self.get_page_schema, name="GetPage")
194
- doc = self.get_all.__doc__
195
- summary = doc.strip().split("\n")[0] if doc else "Get All"
201
+ if not self.get_all_summary:
202
+ doc = self.get_all.__doc__
203
+ self.get_all_summary = doc.strip().split("\n")[0] if doc else "Get All"
196
204
  path = f"/{settings.app_settings.ROUTER_GET_ALL_SUFFIX_FIELD}" if settings.app_settings.ROUTER_WHETHER_ADD_SUFFIX else ""
197
205
  self._add_api_route(
198
206
  path=path,
199
207
  endpoint=self._get_all_decorator(),
200
208
  methods=["GET"],
201
209
  response_model=self.get_all_response_schema_factory,
202
- summary=summary,
210
+ summary=self.get_all_summary,
203
211
  dependencies=self.get_all_route,
204
212
  )
@@ -22,7 +22,7 @@ from fastgenerateapi.utils.exception import NOT_FOUND
22
22
 
23
23
 
24
24
  class GetOneView(BaseView, GetMixin):
25
-
25
+ get_one_summary: Optional[str] = None
26
26
  get_one_route: Union[bool, DEPENDENCIES] = True
27
27
  get_one_schema: Optional[Type[BaseModel]] = None
28
28
  """
@@ -45,7 +45,7 @@ class GetOneView(BaseView, GetMixin):
45
45
  await self.setattr_model(model, prefetch_related_fields=self.prefetch_related_fields, *args, **kwargs)
46
46
 
47
47
  # await self.setattr_model_rpc(self.rpc_class, model, self.rpc_param)
48
- model = await self.set_get_model(model)
48
+ model = await self.set_get_model(model, *args, **kwargs)
49
49
 
50
50
  return self.get_one_schema.from_orm(model)
51
51
 
@@ -77,15 +77,16 @@ class GetOneView(BaseView, GetMixin):
77
77
  if not self.get_one_schema:
78
78
  self.get_one_schema = self.gen_get_one_response_schema()
79
79
  self.get_one_response_schema_factory = response_factory(self.get_one_schema, name="GetOne")
80
- doc = self.get_one.__doc__
81
- summary = doc.strip().split("\n")[0] if self.get_one.__doc__ else "Get One"
80
+ if not self.get_one_summary:
81
+ doc = self.get_one.__doc__
82
+ self.get_one_summary = doc.strip().split("\n")[0] if self.get_one.__doc__ else "Get One"
82
83
  path = f"/{settings.app_settings.ROUTER_GET_ONE_SUFFIX_FIELD}/{'{pk}'}" if settings.app_settings.ROUTER_WHETHER_ADD_SUFFIX else "/{pk}"
83
84
  self._add_api_route(
84
85
  path=path,
85
86
  endpoint=self._get_one_decorator(),
86
87
  methods=["GET"],
87
88
  response_model=self.get_one_response_schema_factory,
88
- summary=summary,
89
+ summary=self.get_one_summary,
89
90
  dependencies=self.get_one_route,
90
91
  error_responses=[NOT_FOUND],
91
92
  )
@@ -22,10 +22,10 @@ from fastgenerateapi.settings.all_settings import settings
22
22
 
23
23
 
24
24
  class GetRelationView(BaseView):
25
-
26
25
  path_id_name: str
27
26
  relation_id_name: str
28
27
  relation_model_class: Optional[Type[Model]]
28
+ get_relation_summary: Optional[str] = None
29
29
  get_relation_route: Union[bool, DEPENDENCIES] = True
30
30
  get_relation_schema: Optional[Type[BaseModel]] = None
31
31
  search_fields: Union[None, list] = None
@@ -194,15 +194,16 @@ class GetRelationView(BaseView):
194
194
  self.get_relation_page_schema = get_page_schema_factory(self.get_relation_schema)
195
195
  self.get_relation_list_schema = get_list_schema_factory(self.get_relation_schema)
196
196
  self.get_relation_response_schema_factory = response_factory(self.get_relation_page_schema, name="GetPage")
197
- doc = self.get_relation.__doc__
198
- summary = doc.strip().split("\n")[0] if doc else f"Get {self.model_class.__name__.title()}"
197
+ if not self.get_relation_summary:
198
+ doc = self.get_relation.__doc__
199
+ summary = doc.strip().split("\n")[0] if doc else f"Get {self.model_class.__name__.title()}"
199
200
  path = f"/get-{self.relation_id_name.removesuffix('_id')}-by-{self.path_id_name.removesuffix('_id')}/{'{pk}'}" if settings.app_settings.ROUTER_WHETHER_ADD_SUFFIX else ""
200
201
  self._add_api_route(
201
202
  path=path,
202
203
  endpoint=self._get_relation_decorator(),
203
204
  methods=["GET"],
204
205
  response_model=self.get_relation_response_schema_factory,
205
- summary=summary,
206
+ summary=self.get_relation_summary,
206
207
  dependencies=self.get_relation_route,
207
208
  )
208
209
 
@@ -31,7 +31,7 @@ from fastgenerateapi.settings.all_settings import settings
31
31
 
32
32
 
33
33
  class GetTreeView(BaseView):
34
-
34
+ get_tree_summary: Optional[str] = None
35
35
  get_tree_route: Union[bool, DEPENDENCIES] = True
36
36
  get_tree_schema: Optional[Type[BaseModel]] = None
37
37
  search_fields: Union[None, list] = None
@@ -187,15 +187,16 @@ class GetTreeView(BaseView):
187
187
  self.get_tree_schema = self.get_tree_schema or get_tree_schema_factory(self.model_class)
188
188
  self.get_tree_data_schema = get_list_schema_factory(self.get_tree_schema)
189
189
  self.get_tree_response_schema_factory = response_factory(self.get_tree_data_schema, name="GetTree")
190
- doc = self.get_tree.__doc__
191
- summary = doc.strip().split("\n")[0] if self.get_tree.__doc__ else "Get Tree"
190
+ if not self.get_tree_summary:
191
+ doc = self.get_tree.__doc__
192
+ self.get_tree_summary = doc.strip().split("\n")[0] if self.get_tree.__doc__ else "Get Tree"
192
193
  path = f"/{settings.app_settings.ROUTER_GET_TREE_SUFFIX_FIELD}" if settings.app_settings.ROUTER_WHETHER_ADD_SUFFIX else ""
193
194
  self._add_api_route(
194
195
  path=path,
195
196
  endpoint=self._get_tree_decorator(),
196
197
  methods=["GET"],
197
198
  response_model=self.get_tree_response_schema_factory,
198
- summary=summary,
199
+ summary=self.get_tree_summary,
199
200
  dependencies=self.get_tree_route,
200
201
  )
201
202
 
@@ -8,9 +8,7 @@ from fastgenerateapi.utils.exception import NOT_FOUND
8
8
 
9
9
  from fastgenerateapi.controller.filter_controller import BaseFilter
10
10
  from fastgenerateapi.controller import RouterController
11
- from fastgenerateapi.controller.ws_controller import WsController
12
11
 
13
- from fastgenerateapi.settings.all_settings import settings
14
12
  from starlette.exceptions import HTTPException
15
13
 
16
14
  from fastgenerateapi.data_type.data_type import DEPENDENCIES, T, PYDANTIC_SCHEMA
@@ -48,9 +46,6 @@ class BaseMixin(Generic[T], APIRouter, ABC):
48
46
  route_field_func = f"_handler_{route_field.rsplit('_', 1)[0]}_settings"
49
47
  if hasattr(self, route_field) and getattr(self, route_field) and hasattr(self, route_field_func):
50
48
  getattr(self, route_field_func)()
51
- # if self.table_name:
52
- # if hasattr(self, "_handler_sql_get_all_settings"):
53
- # getattr(self, "_handler_sql_get_all_settings")()
54
49
 
55
50
  @staticmethod
56
51
  def get_base_filter(fields: list, schema: Optional[PYDANTIC_SCHEMA] = None) -> list:
@@ -5,7 +5,7 @@ from fastgenerateapi.pydantic_utils.base_model import BaseModel
5
5
 
6
6
  class GetMixin:
7
7
 
8
- async def set_get_model(self, model: Model) -> Model:
8
+ async def set_get_model(self, model: Model, *args, **kwargs) -> Model:
9
9
  """
10
10
  修改查询后的model数据
11
11
  """
@@ -20,11 +20,11 @@ from fastgenerateapi.utils.exception import NOT_FOUND
20
20
 
21
21
 
22
22
  class UpdateRelationView(BaseView, SaveMixin):
23
-
24
23
  path_id_name: str
25
24
  relation_id_name: str
26
25
  update_relation_schema: Optional[Type[BaseModel]] = IdList
27
26
  update_relation_response_schema: Optional[Type[BaseModel]] = None
27
+ update_relation_summary: Optional[str] = None
28
28
  update_relation_route: Union[bool, DEPENDENCIES] = True
29
29
  """
30
30
  path_id_name: 路径id在模型中对应的字段名
@@ -83,16 +83,16 @@ class UpdateRelationView(BaseView, SaveMixin):
83
83
  self.update_relation_response_schema = func_type
84
84
  if self.update_relation_response_schema:
85
85
  self.update_relation_response_schema_factory = response_factory(self.update_relation_response_schema, name="UpdateRelation")
86
-
87
- doc = self.update_relation.__doc__
88
- summary = doc.strip().split("\n")[0] if doc else f"Update {self.model_class.__name__.title()}"
86
+ if not self.update_relation_summary:
87
+ doc = self.update_relation.__doc__
88
+ self.update_relation_summary = doc.strip().split("\n")[0] if doc else f"Update {self.model_class.__name__.title()}"
89
89
  path = f"/update-{self.relation_id_name.removesuffix('_id')}-by-{self.path_id_name.removesuffix('_id')}/{'{pk}'}" if settings.app_settings.ROUTER_WHETHER_ADD_SUFFIX else "/{pk}"
90
90
  self._add_api_route(
91
91
  path=path,
92
92
  endpoint=self._update_relation_decorator(),
93
93
  methods=["PUT"],
94
94
  response_model=self.update_relation_response_schema_factory,
95
- summary=summary,
95
+ summary=self.update_relation_summary,
96
96
  dependencies=self.update_relation_route,
97
97
  error_responses=[NOT_FOUND],
98
98
  )
@@ -25,6 +25,7 @@ class UpdateView(BaseView, SaveMixin):
25
25
 
26
26
  update_schema: Optional[Type[BaseModel]] = None
27
27
  update_response_schema: Optional[Type[BaseModel]] = None
28
+ update_summary: Optional[str] = None
28
29
  update_route: Union[bool, DEPENDENCIES] = True
29
30
  """
30
31
  update_schema: 修改请求模型
@@ -108,16 +109,16 @@ class UpdateView(BaseView, SaveMixin):
108
109
  else:
109
110
  self.update_response_schema_factory = self.gen_get_one_response_schema_factory()
110
111
  self.update_response_schema = self.get_one_schema
111
-
112
- doc = self.update.__doc__
113
- summary = doc.strip().split("\n")[0] if doc else f"Update"
112
+ if not self.update_summary:
113
+ doc = self.update.__doc__
114
+ self.update_summary = doc.strip().split("\n")[0] if doc else f"Update"
114
115
  path = f"/{settings.app_settings.ROUTER_UPDATE_SUFFIX_FIELD}/{'{pk}'}" if settings.app_settings.ROUTER_WHETHER_ADD_SUFFIX else "/{pk}"
115
116
  self._add_api_route(
116
117
  path=path,
117
118
  endpoint=self._update_decorator(),
118
119
  methods=["PUT"],
119
120
  response_model=self.update_response_schema_factory,
120
- summary=summary,
121
+ summary=self.update_summary,
121
122
  dependencies=self.update_route,
122
123
  error_responses=[NOT_FOUND],
123
124
  )
@@ -1,5 +1,4 @@
1
1
  import inspect
2
- from typing import Union
3
2
 
4
3
  from fastgenerateapi.settings.all_settings import settings
5
4
  from pydantic import BaseModel
@@ -26,41 +25,19 @@ class BaseRouter(ResponseMixin):
26
25
  else:
27
26
  self.error(msg=f"方法 {func_name} 中 {method} 不符合规范")
28
27
 
29
- # 此方案放弃
30
- # if self.method == "GET" and not prefix.endswith("/") and not prefix.endswith("{pk}"):
31
- # prefix += "/"
32
28
  self.prefix = prefix
33
-
34
- # if function in ["get_one", "get_all", "create", "update", "update_optional", "destroy", "switch"]:
35
- # self.is_new = False
36
- # else:
37
- # self.is_new = True
38
- router_args = router_class.router_args.get(func_name, {}) if router_class.router_args else {}
39
- if router_args:
40
- if type(router_args).__name__ == 'ModelMetaclass' and issubclass(router_args, BaseModel):
41
- router_args = {"response_model": router_args}
42
- if isinstance(router_args, list):
43
- router_args = {"dependencies": router_args}
44
- if isinstance(router_args, str):
45
- router_args = {"summary": router_args}
46
-
47
- self.dependencies = router_args.get("dependencies") if router_args and router_args.get("dependencies") else []
48
- self.dependencies += dependencies if dependencies else []
49
-
50
- if router_args and router_args.get("summary"):
51
- summary = router_args.get("summary")
52
- if summary is None:
29
+ if not summary:
53
30
  doc = getattr(router_class, func_name).__doc__
54
- summary = doc.strip().split("\n")[0] if doc else func_name.lstrip("view_").rstrip("_pk").replace("_",
55
- " ").title()
31
+ summary = doc.strip().split("\n")[0] if doc else func_name.lstrip("view_").rstrip("_pk").replace(
32
+ "_"," ").title()
56
33
  self.summary = summary
57
34
 
58
35
  if func_type != inspect._empty and func_type is not None:
59
36
  self.response_model = response_factory(func_type)
60
- elif router_args and router_args.get("response_model"):
61
- self.response_model = response_factory(router_args.get("response_model"))
62
37
  else:
63
38
  self.response_model = None
39
+ self.dependencies = dependencies
40
+
64
41
 
65
42
 
66
43
  class RouterController:
@@ -101,13 +78,3 @@ class RouterController:
101
78
  prefix = prefix_field + middle_field + suffix_field
102
79
 
103
80
  self.router_data.append(BaseRouter(router_class, func_name, func_type, method, prefix))
104
- # self.router_data.setdefault(func_name, BaseRouter(router_class, func_name, method, prefix))
105
-
106
- # def get_summary(self, func_name):
107
- #
108
- # return self.router_data.get(func_name).summary
109
- #
110
- # def get_dependencies(self, func_name, default: Union[bool, DEPENDENCIES] = None):
111
- # dependencies = [] if default is None or isinstance(default, bool) else default
112
- #
113
- # return dependencies | self.router_data.get(func_name).dependencies
@@ -4,22 +4,12 @@ from fastgenerateapi.settings.all_settings import settings
4
4
  class WsRouter:
5
5
 
6
6
  def __init__(self, router_class, path, func_name):
7
- router_args = router_class.router_args.get(func_name, {}) if router_class.router_args else {}
8
- if router_args and isinstance(router_args, list):
9
- router_args = {"dependencies": router_args}
10
-
11
- self.dependencies = router_args.get("dependencies") if router_args and router_args.get("dependencies") else []
7
+ self.dependencies = []
12
8
  self.path = path
13
9
  self.func_name = func_name
14
10
 
15
- name = None
16
- if router_args and router_args.get("name"):
17
- name = router_args.get("name")
18
- if name is None:
19
- doc = getattr(router_class, func_name).__doc__
20
- if doc:
21
- name = doc.strip().split("\n")[0]
22
- self.name = name or None
11
+ doc = getattr(router_class, func_name).__doc__
12
+ self.name = doc.strip().split("\n")[0] if doc else None
23
13
 
24
14
 
25
15
  class WsController:
@@ -53,3 +53,27 @@ def filter_params_deps(
53
53
  return result
54
54
 
55
55
  return filter_query
56
+
57
+
58
+ def extra_filter_params_deps(
59
+ schema: Optional[PYDANTIC_SCHEMA] = None
60
+ ):
61
+ """
62
+ 生成filter依赖
63
+ """
64
+ filter_schema_dep = schema or EmptyPydantic
65
+
66
+ def extra_filter_query(
67
+ filter_schema: filter_schema_dep = Depends(),
68
+ ) -> dict[str, Any]:
69
+ """
70
+ filter 筛选字段依赖
71
+ :param filter_schema:
72
+ :return:
73
+ """
74
+ result = filter_schema.dict(exclude_none=True)
75
+ return result
76
+
77
+ return extra_filter_query
78
+
79
+
@@ -26,10 +26,6 @@ class StaffView(APIView):
26
26
  self.model_class = StaffInfo
27
27
  self.order_by_fields = ["-created_at"]
28
28
  self.prefetch_related_fields = {"company": ["name"]}
29
- # self.router_args = {
30
- # # "view_get_staff_list": ListTestSchema
31
- # "view_get_staff_list": TestSchema
32
- # }
33
29
  self.get_all_schema = StaffReadSchema
34
30
  # self.dependencies = [Depends(ADG.authenticate_user_deps), ]
35
31
  super().__init__()