Skip to content

Commit 1c8e855

Browse files
committed
set resource type on data layer
1 parent eea98d7 commit 1c8e855

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

fastapi_jsonapi/api.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -95,16 +95,16 @@ def __init__(
9595
self.list_views = None
9696
self.detail_view_resource: Type["DetailViewBase"] = class_detail
9797
self.list_view_resource: Type["ListViewBase"] = class_list
98-
self._type: str = resource_type
98+
self.type_: str = resource_type
9999
self._schema: Type[BaseModel] = schema
100100
self.schema_list: Type[BaseModel] = schema
101101
self.model: Type[TypeModel] = model
102102
self.schema_detail = schema
103103

104-
if self._type in self.all_jsonapi_routers:
105-
msg = f"Resource type {self._type!r} already registered"
104+
if self.type_ in self.all_jsonapi_routers:
105+
msg = f"Resource type {self.type_!r} already registered"
106106
raise ValueError(msg)
107-
self.all_jsonapi_routers[self._type] = self
107+
self.all_jsonapi_routers[self.type_] = self
108108

109109
self.pagination_default_size: Optional[int] = pagination_default_size
110110
self.pagination_default_number: Optional[int] = pagination_default_number
@@ -150,7 +150,7 @@ def get_endpoint_name(
150150
:param kind: list / detail
151151
:return:
152152
"""
153-
return f"{action}_{self._type}_{kind}"
153+
return f"{action}_{self.type_}_{kind}"
154154

155155
def _register_get_resource_list(self, path: str):
156156
list_response_example = {
@@ -161,7 +161,7 @@ def _register_get_resource_list(self, path: str):
161161
tags=self._tags,
162162
responses=list_response_example | self.default_error_responses,
163163
methods=["GET"],
164-
summary=f"Get list of `{self._type}` objects",
164+
summary=f"Get list of `{self.type_}` objects",
165165
endpoint=self._create_get_resource_list_view(),
166166
name=self.get_endpoint_name("get", "list"),
167167
)
@@ -175,7 +175,7 @@ def _register_post_resource_list(self, path: str):
175175
tags=self._tags,
176176
responses=create_resource_response_example | self.default_error_responses,
177177
methods=["POST"],
178-
summary=f"Create object `{self._type}`",
178+
summary=f"Create object `{self.type_}`",
179179
status_code=status.HTTP_201_CREATED,
180180
endpoint=self._create_post_resource_list_view(),
181181
name=self.get_endpoint_name("create", "list"),
@@ -190,7 +190,7 @@ def _register_delete_resource_list(self, path: str):
190190
tags=self._tags,
191191
responses=detail_response_example | self.default_error_responses,
192192
methods=["DELETE"],
193-
summary=f"Delete objects `{self._type}` by filters",
193+
summary=f"Delete objects `{self.type_}` by filters",
194194
endpoint=self._create_delete_resource_list_view(),
195195
name=self.get_endpoint_name("delete", "list"),
196196
)
@@ -206,7 +206,7 @@ def _register_get_resource_detail(self, path: str):
206206
tags=self._tags,
207207
responses=detail_response_example | self.default_error_responses,
208208
methods=["GET"],
209-
summary=f"Get object `{self._type}` by id",
209+
summary=f"Get object `{self.type_}` by id",
210210
endpoint=self._create_get_resource_detail_view(),
211211
name=self.get_endpoint_name("get", "detail"),
212212
)
@@ -222,7 +222,7 @@ def _register_patch_resource_detail(self, path: str):
222222
tags=self._tags,
223223
responses=detail_response_example | self.default_error_responses,
224224
methods=["PATCH"],
225-
summary=f"Patch object `{self._type}` by id",
225+
summary=f"Patch object `{self.type_}` by id",
226226
endpoint=self._create_patch_resource_detail_view(),
227227
name=self.get_endpoint_name("update", "detail"),
228228
)
@@ -238,7 +238,7 @@ def _register_delete_resource_detail(self, path: str):
238238
tags=self._tags,
239239
responses=detail_response_example | self.default_error_responses,
240240
methods=["DELETE"],
241-
summary=f"Delete object `{self._type}` by id",
241+
summary=f"Delete object `{self.type_}` by id",
242242
endpoint=self._create_delete_resource_detail_view(),
243243
name=self.get_endpoint_name("delete", "detail"),
244244
)

fastapi_jsonapi/data_layers/base.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,18 @@ def __init__(
4646
id_name_field: Optional[str] = None,
4747
disable_collection_count: bool = False,
4848
default_collection_count: int = -1,
49+
type_: str = "",
4950
**kwargs,
5051
):
5152
"""
53+
5254
:param schema:
5355
:param model:
5456
:param url_id_field:
5557
:param id_name_field:
5658
:param disable_collection_count:
5759
:param default_collection_count:
60+
:param type_: resource type
5861
:param kwargs:
5962
"""
6063
self.model = model
@@ -64,6 +67,7 @@ def __init__(
6467
self.disable_collection_count: bool = disable_collection_count
6568
self.default_collection_count: int = default_collection_count
6669
self.is_atomic = False
70+
self.type_ = type_
6771

6872
async def atomic_start(self, previous_dl: Optional["BaseDataLayer"] = None):
6973
self.is_atomic = True

fastapi_jsonapi/views/view_base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ def _get_data_layer(self, schema: Type[BaseModel], **dl_kwargs):
6666
return self.data_layer_cls(
6767
schema=schema,
6868
model=self.jsonapi.model,
69+
type_=self.jsonapi.type_,
6970
**dl_kwargs,
7071
)
7172

0 commit comments

Comments
 (0)