Skip to content

Commit 99acb57

Browse files
committed
default methods made optional
1 parent 47cf380 commit 99acb57

File tree

1 file changed

+41
-33
lines changed
  • fastapi_jsonapi/misc/sqla/generics

1 file changed

+41
-33
lines changed

fastapi_jsonapi/misc/sqla/generics/base.py

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -48,24 +48,28 @@ def __init__(self, jsonapi: RoutersJSONAPI, **options):
4848
super().__init__(jsonapi=jsonapi, **options)
4949
self.check_session_dependency()
5050

51-
async def get(
52-
obj_id,
53-
query_params: QueryStringManager = Depends(QueryStringManager),
54-
session: AsyncSession = self.session_dependency,
55-
) -> JSONAPIResultDetailSchema:
56-
dl = SqlalchemyEngine(
57-
schema=self.jsonapi.schema_detail,
58-
model=self.jsonapi.model,
59-
session=session,
60-
)
61-
view_kwargs = {"id": obj_id}
62-
return await self.get_detailed_result(
63-
dl=dl,
64-
view_kwargs=view_kwargs,
65-
query_params=query_params,
66-
)
67-
68-
self.get = get
51+
try:
52+
getattr(self, "get")
53+
except AttributeError:
54+
55+
async def get(
56+
obj_id,
57+
query_params: QueryStringManager = Depends(QueryStringManager),
58+
session: AsyncSession = self.session_dependency,
59+
) -> JSONAPIResultDetailSchema:
60+
dl = SqlalchemyEngine(
61+
schema=self.jsonapi.schema_detail,
62+
model=self.jsonapi.model,
63+
session=session,
64+
)
65+
view_kwargs = {"id": obj_id}
66+
return await self.get_detailed_result(
67+
dl=dl,
68+
view_kwargs=view_kwargs,
69+
query_params=query_params,
70+
)
71+
72+
self.get = get
6973

7074

7175
class ListViewBaseGeneric(
@@ -78,18 +82,22 @@ def __init__(self, jsonapi: RoutersJSONAPI, **options):
7882
super().__init__(jsonapi=jsonapi, **options)
7983
self.check_session_dependency()
8084

81-
async def get(
82-
query_params: QueryStringManager = Depends(QueryStringManager),
83-
session: AsyncSession = self.session_dependency,
84-
) -> JSONAPIResultListSchema:
85-
dl = SqlalchemyEngine(
86-
schema=self.jsonapi.schema_list,
87-
model=self.jsonapi.model,
88-
session=session,
89-
)
90-
return await self.get_paginated_result(
91-
dl=dl,
92-
query_params=query_params,
93-
)
94-
95-
self.get = get
85+
try:
86+
getattr(self, "get")
87+
except AttributeError:
88+
89+
async def get(
90+
query_params: QueryStringManager = Depends(QueryStringManager),
91+
session: AsyncSession = self.session_dependency,
92+
) -> JSONAPIResultListSchema:
93+
dl = SqlalchemyEngine(
94+
schema=self.jsonapi.schema_list,
95+
model=self.jsonapi.model,
96+
session=session,
97+
)
98+
return await self.get_paginated_result(
99+
dl=dl,
100+
query_params=query_params,
101+
)
102+
103+
self.get = get

0 commit comments

Comments
 (0)