Skip to content

Commit 942698b

Browse files
committed
refactoring, add tests coverage
1 parent f17f8ca commit 942698b

21 files changed

Lines changed: 255 additions & 861 deletions

File tree

examples/api_for_sqlalchemy/helpers/factories/__init__.py

Lines changed: 0 additions & 5 deletions
This file was deleted.

examples/api_for_sqlalchemy/helpers/factories/faker.py

Lines changed: 0 additions & 9 deletions
This file was deleted.

examples/api_for_sqlalchemy/helpers/factories/post.py

Lines changed: 0 additions & 55 deletions
This file was deleted.

examples/api_for_sqlalchemy/helpers/factories/user_bio.py

Lines changed: 0 additions & 58 deletions
This file was deleted.

examples/api_for_sqlalchemy/helpers/updaters/__init__.py

Whitespace-only changes.

examples/api_for_sqlalchemy/helpers/updaters/update_post.py

Lines changed: 0 additions & 47 deletions
This file was deleted.

examples/api_for_sqlalchemy/helpers/updaters/update_user.py

Lines changed: 0 additions & 70 deletions
This file was deleted.

fastapi_jsonapi/api.py

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
Dict,
88
Iterable,
99
List,
10+
Literal,
1011
Optional,
1112
Type,
1213
TypeVar,
@@ -129,6 +130,18 @@ def _create_and_register_generic_views(self):
129130
else:
130131
self._register_views(self._path)
131132

133+
def get_endpoint_name(
134+
self,
135+
action: Literal["get", "create", "update", "delete"],
136+
kind: Literal["list", "detail"],
137+
):
138+
"""
139+
:param action
140+
:param kind: list / detail
141+
:return:
142+
"""
143+
return f"{action}_{self._type}_{kind}"
144+
132145
def _register_get_resource_list(self, path: str):
133146
list_response_example = {
134147
status.HTTP_200_OK: {"model": self.list_response_schema},
@@ -140,6 +153,7 @@ def _register_get_resource_list(self, path: str):
140153
methods=["GET"],
141154
summary=f"Get list of `{self._type}` objects",
142155
endpoint=self._create_get_resource_list_view(),
156+
name=self.get_endpoint_name("get", "list"),
143157
)
144158

145159
def _register_post_resource_list(self, path: str):
@@ -154,6 +168,7 @@ def _register_post_resource_list(self, path: str):
154168
summary=f"Create object `{self._type}`",
155169
status_code=status.HTTP_201_CREATED,
156170
endpoint=self._create_post_resource_list_view(),
171+
name=self.get_endpoint_name("create", "list"),
157172
)
158173

159174
def _register_delete_resource_list(self, path: str):
@@ -167,6 +182,7 @@ def _register_delete_resource_list(self, path: str):
167182
methods=["DELETE"],
168183
summary=f"Delete objects `{self._type}` by filters",
169184
endpoint=self._create_delete_resource_list_view(),
185+
name=self.get_endpoint_name("delete", "list"),
170186
)
171187

172188
def _register_get_resource_detail(self, path: str):
@@ -182,6 +198,7 @@ def _register_get_resource_detail(self, path: str):
182198
methods=["GET"],
183199
summary=f"Get object `{self._type}` by id",
184200
endpoint=self._create_get_resource_detail_view(),
201+
name=self.get_endpoint_name("get", "detail"),
185202
)
186203

187204
def _register_patch_resource_detail(self, path: str):
@@ -197,6 +214,7 @@ def _register_patch_resource_detail(self, path: str):
197214
methods=["PATCH"],
198215
summary=f"Patch object `{self._type}` by id",
199216
endpoint=self._create_patch_resource_detail_view(),
217+
name=self.get_endpoint_name("update", "detail"),
200218
)
201219

202220
def _register_delete_resource_detail(self, path: str):
@@ -212,6 +230,7 @@ def _register_delete_resource_detail(self, path: str):
212230
methods=["DELETE"],
213231
summary=f"Delete object `{self._type}` by id",
214232
endpoint=self._create_delete_resource_detail_view(),
233+
name=self.get_endpoint_name("delete", "detail"),
215234
)
216235

217236
def _create_pagination_query_params(self) -> List[Parameter]:
@@ -387,7 +406,7 @@ async def wrapper(request: Request, **extra_view_deps):
387406
jsonapi=self,
388407
)
389408

390-
response = await resource.get_resource_list_result(**extra_view_deps)
409+
response = await resource.handle_get_resource_list(**extra_view_deps)
391410
return response
392411

393412
additional_dependency_params = self._update_method_config_and_get_dependency_params(
@@ -414,7 +433,7 @@ async def wrapper(request: Request, data_create: schema_in, **extra_view_deps):
414433
jsonapi=self,
415434
)
416435

417-
response = await resource.post_resource_list_result(
436+
response = await resource.handle_post_resource_list(
418437
data_create=data_create,
419438
**extra_view_deps,
420439
)
@@ -445,7 +464,7 @@ async def wrapper(request: Request, **extra_view_deps):
445464
jsonapi=self,
446465
)
447466

448-
response = await resource.delete_resource_list_result(**extra_view_deps)
467+
response = await resource.handle_delete_resource_list(**extra_view_deps)
449468
return response
450469

451470
additional_dependency_params = self._update_method_config_and_get_dependency_params(
@@ -476,7 +495,7 @@ async def wrapper(request: Request, obj_id: str = Path(...), **extra_view_deps):
476495
)
477496

478497
# TODO: pass obj_id as kwarg (get name from DetailView class)
479-
response = await resource.get_resource_detail_result(obj_id, **extra_view_deps)
498+
response = await resource.handle_get_resource_detail(obj_id, **extra_view_deps)
480499
return response
481500

482501
additional_dependency_params = self._update_method_config_and_get_dependency_params(
@@ -510,7 +529,7 @@ async def wrapper(
510529
)
511530

512531
# TODO: pass obj_id as kwarg (get name from DetailView class)
513-
response = await resource.update_resource_result(
532+
response = await resource.handle_update_resource(
514533
obj_id=obj_id,
515534
data_update=data_update.data,
516535
**extra_view_deps,
@@ -546,7 +565,7 @@ async def wrapper(
546565
)
547566

548567
# TODO: pass obj_id as kwarg (get name from DetailView class)
549-
response = await resource.delete_resource_result(obj_id=obj_id, **extra_view_deps)
568+
response = await resource.handle_delete_resource(obj_id=obj_id, **extra_view_deps)
550569
return response
551570

552571
additional_dependency_params = self._update_method_config_and_get_dependency_params(

fastapi_jsonapi/data_layers/sorting/sqlalchemy.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ def related_model(self) -> DeclarativeMeta:
157157
return get_related_model_cls(self.model, get_model_field(self.schema, relationship_field))
158158

159159
@property
160-
def related_schema(self) -> TypeSchema:
160+
def related_schema(self) -> Type[TypeSchema]:
161161
"""
162162
Get the related schema of a relationship field.
163163

fastapi_jsonapi/exceptions/handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
async def base_exception_handler(request: Request, exc: HTTPException):
88
return JSONResponse(
99
status_code=exc.status_code,
10-
content={"errors": [exc._dict]},
10+
content={"errors": [exc.as_dict]},
1111
)

0 commit comments

Comments
 (0)