Skip to content

Commit 02fbce4

Browse files
committed
create get_data_layer method
1 parent 4cccb9c commit 02fbce4

File tree

3 files changed

+32
-8
lines changed

3 files changed

+32
-8
lines changed

fastapi_jsonapi/views/detail_view.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import logging
2-
from typing import TYPE_CHECKING, TypeVar, Union
2+
from typing import (
3+
TYPE_CHECKING,
4+
Any,
5+
Dict,
6+
TypeVar,
7+
Union,
8+
)
39

410
from fastapi_jsonapi import BadRequest
511
from fastapi_jsonapi.schema import (
@@ -18,12 +24,18 @@
1824

1925

2026
class DetailViewBase(ViewBase):
27+
async def get_data_layer(
28+
self,
29+
extra_view_deps: Dict[str, Any],
30+
) -> "BaseDataLayer":
31+
return await self.get_data_layer_for_detail(extra_view_deps)
32+
2133
async def handle_get_resource_detail(
2234
self,
2335
object_id: Union[int, str],
2436
**extra_view_deps,
2537
):
26-
dl: "BaseDataLayer" = await self.get_data_layer_for_detail(extra_view_deps)
38+
dl: "BaseDataLayer" = await self.get_data_layer(extra_view_deps)
2739

2840
view_kwargs = {dl.url_id_field: object_id}
2941
db_object = await dl.get_object(view_kwargs=view_kwargs, qs=self.query_params)
@@ -41,7 +53,7 @@ async def handle_update_resource(
4153
detail="obj_id and data.id should be same",
4254
pointer="/data/id",
4355
)
44-
dl: "BaseDataLayer" = await self.get_data_layer_for_detail(extra_view_deps)
56+
dl: "BaseDataLayer" = await self.get_data_layer(extra_view_deps)
4557

4658
view_kwargs = {dl.url_id_field: obj_id}
4759
db_object = await dl.get_object(view_kwargs=view_kwargs, qs=self.query_params)
@@ -55,7 +67,7 @@ async def handle_delete_resource(
5567
obj_id: str,
5668
**extra_view_deps,
5769
):
58-
dl: "BaseDataLayer" = await self.get_data_layer_for_detail(extra_view_deps)
70+
dl: "BaseDataLayer" = await self.get_data_layer(extra_view_deps)
5971

6072
view_kwargs = {dl.url_id_field: obj_id}
6173
db_object = await dl.get_object(view_kwargs=view_kwargs, qs=self.query_params)

fastapi_jsonapi/views/list_view.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import logging
2-
from typing import TYPE_CHECKING
2+
from typing import TYPE_CHECKING, Any, Dict
33

44
from fastapi_jsonapi.schema import (
55
BaseJSONAPIDataInSchema,
@@ -28,8 +28,14 @@ def _calculate_total_pages(self, db_items_count: int) -> int:
2828

2929
return total_pages
3030

31+
async def get_data_layer(
32+
self,
33+
extra_view_deps: Dict[str, Any],
34+
) -> "BaseDataLayer":
35+
return await self.get_data_layer_for_list(extra_view_deps)
36+
3137
async def handle_get_resource_list(self, **extra_view_deps) -> JSONAPIResultListSchema:
32-
dl: "BaseDataLayer" = await self.get_data_layer_for_list(extra_view_deps)
38+
dl: "BaseDataLayer" = await self.get_data_layer(extra_view_deps)
3339
query_params = self.query_params
3440
count, items_from_db = await dl.get_collection(qs=query_params)
3541
total_pages = self._calculate_total_pages(count)
@@ -41,7 +47,7 @@ async def handle_post_resource_list(
4147
data_create: BaseJSONAPIDataInSchema,
4248
**extra_view_deps,
4349
) -> JSONAPIResultDetailSchema:
44-
dl: "BaseDataLayer" = await self.get_data_layer_for_list(extra_view_deps)
50+
dl: "BaseDataLayer" = await self.get_data_layer(extra_view_deps)
4551
created_object = await dl.create_object(data_create=data_create.data, view_kwargs={})
4652
created_object_id = dl.get_object_id(created_object)
4753

@@ -51,7 +57,7 @@ async def handle_post_resource_list(
5157
return self._build_detail_response(db_object)
5258

5359
async def handle_delete_resource_list(self, **extra_view_deps) -> JSONAPIResultListSchema:
54-
dl: "BaseDataLayer" = await self.get_data_layer_for_list(extra_view_deps)
60+
dl: "BaseDataLayer" = await self.get_data_layer(extra_view_deps)
5561
query_params = self.query_params
5662
count, items_from_db = await dl.get_collection(qs=query_params)
5763
total_pages = self._calculate_total_pages(count)

fastapi_jsonapi/views/view_base.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ def _get_data_layer(self, schema: Type[BaseModel], **dl_kwargs):
6969
**dl_kwargs,
7070
)
7171

72+
async def get_data_layer(
73+
self,
74+
extra_view_deps: Dict[str, Any],
75+
) -> BaseDataLayer:
76+
raise NotImplementedError
77+
7278
async def get_data_layer_for_detail(
7379
self,
7480
extra_view_deps: Dict[str, Any],

0 commit comments

Comments
 (0)