Skip to content

Commit f44a83d

Browse files
committed
generic methods initialization has moved from constructor
1 parent 99acb57 commit f44a83d

File tree

1 file changed

+25
-19
lines changed
  • fastapi_jsonapi/misc/sqla/generics

1 file changed

+25
-19
lines changed

fastapi_jsonapi/misc/sqla/generics/base.py

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def build_view_initialization_error(class_name: str) -> GenericViewInitializatio
2727
class ValidateSessionDependencyMixin:
2828
session_dependency: DependsParams
2929

30-
def check_session_dependency(self):
30+
def _check_session_dependency(self):
3131
"""Checks that session dependency is a valid argument option acceptable by Fastapi views"""
3232
if any(
3333
[
@@ -46,22 +46,25 @@ class DetailViewBaseGeneric(
4646

4747
def __init__(self, jsonapi: RoutersJSONAPI, **options):
4848
super().__init__(jsonapi=jsonapi, **options)
49-
self.check_session_dependency()
49+
self._check_session_dependency()
50+
self._init_generic_methods()
5051

51-
try:
52-
getattr(self, "get")
53-
except AttributeError:
52+
def _get_data_layer(self, session: AsyncSession) -> SqlalchemyEngine:
53+
return SqlalchemyEngine(
54+
schema=self.jsonapi.schema_detail,
55+
model=self.jsonapi.model,
56+
session=session,
57+
)
58+
59+
def _init_generic_methods(self):
60+
if not hasattr(self, "get"):
5461

5562
async def get(
5663
obj_id,
5764
query_params: QueryStringManager = Depends(QueryStringManager),
5865
session: AsyncSession = self.session_dependency,
5966
) -> JSONAPIResultDetailSchema:
60-
dl = SqlalchemyEngine(
61-
schema=self.jsonapi.schema_detail,
62-
model=self.jsonapi.model,
63-
session=session,
64-
)
67+
dl = self._get_data_layer(session)
6568
view_kwargs = {"id": obj_id}
6669
return await self.get_detailed_result(
6770
dl=dl,
@@ -80,21 +83,24 @@ class ListViewBaseGeneric(
8083

8184
def __init__(self, jsonapi: RoutersJSONAPI, **options):
8285
super().__init__(jsonapi=jsonapi, **options)
83-
self.check_session_dependency()
86+
self._check_session_dependency()
87+
self._init_generic_methods()
8488

85-
try:
86-
getattr(self, "get")
87-
except AttributeError:
89+
def _get_data_layer(self, session: AsyncSession) -> SqlalchemyEngine:
90+
return SqlalchemyEngine(
91+
schema=self.jsonapi.schema_detail,
92+
model=self.jsonapi.model,
93+
session=session,
94+
)
95+
96+
def _init_generic_methods(self):
97+
if not hasattr(self, "get"):
8898

8999
async def get(
90100
query_params: QueryStringManager = Depends(QueryStringManager),
91101
session: AsyncSession = self.session_dependency,
92102
) -> JSONAPIResultListSchema:
93-
dl = SqlalchemyEngine(
94-
schema=self.jsonapi.schema_list,
95-
model=self.jsonapi.model,
96-
session=session,
97-
)
103+
dl = self._get_data_layer(session)
98104
return await self.get_paginated_result(
99105
dl=dl,
100106
query_params=query_params,

0 commit comments

Comments
 (0)