@@ -27,7 +27,7 @@ def build_view_initialization_error(class_name: str) -> GenericViewInitializatio
2727class 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