@@ -20,64 +20,40 @@ def __tablename__(self) -> str:
2020 return self .__name__ .lower ()
2121
2222 async def save (self , db_session : AsyncSession ):
23- """
24-
25- :param db_session:
26- :return:
27- """
28- try :
29- db_session .add (self )
30- await db_session .commit ()
31- await db_session .refresh (self )
32- return self
33- except SQLAlchemyError as ex :
34- await logger .aerror (f"Error inserting instance of { self } : { repr (ex )} " )
35- raise HTTPException (
36- status_code = status .HTTP_422_UNPROCESSABLE_ENTITY , detail = repr (ex )
37- ) from ex
23+ db_session .add (self )
24+ await db_session .flush ()
25+ await db_session .refresh (self )
26+ return self
3827
3928 async def delete (self , db_session : AsyncSession ):
40- """
41-
42- :param db_session:
43- :return:
44- """
4529 try :
4630 await db_session .delete (self )
47- await db_session .commit ()
4831 return True
4932 except SQLAlchemyError as ex :
5033 raise HTTPException (
5134 status_code = status .HTTP_422_UNPROCESSABLE_ENTITY , detail = repr (ex )
5235 ) from ex
5336
54- async def update (self , db : AsyncSession , ** kwargs ):
55- """
56-
57- :param db:
58- :param kwargs
59- :return:
60- """
37+ async def update (self , ** kwargs ):
6138 try :
6239 for k , v in kwargs .items ():
6340 setattr (self , k , v )
64- return await db . commit ()
41+ return True
6542 except SQLAlchemyError as ex :
6643 raise HTTPException (
6744 status_code = status .HTTP_422_UNPROCESSABLE_ENTITY , detail = repr (ex )
6845 ) from ex
6946
70- async def save_or_update (self , db : AsyncSession ):
47+ async def save_or_update (self , db_session : AsyncSession ):
7148 try :
72- db .add (self )
73- return await db .commit ()
49+ db_session .add (self )
50+ await db_session .flush ()
51+ return True
7452 except IntegrityError as exception :
7553 if isinstance (exception .orig , UniqueViolationError ):
76- return await db .merge (self )
54+ return await db_session .merge (self )
7755 else :
7856 raise HTTPException (
7957 status_code = status .HTTP_422_UNPROCESSABLE_ENTITY ,
8058 detail = repr (exception ),
8159 ) from exception
82- finally :
83- await db .close ()
0 commit comments