Skip to content

Commit d275cd2

Browse files
committed
refactor: CrudAPI _crud_get_obj
1 parent 8e0f450 commit d275cd2

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

easy/controller/meta.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from ninja_extra.pagination import paginate
1212

1313
from easy.domain.orm import CrudModel
14+
from easy.response import BaseApiResponse
1415
from easy.services import BaseService
1516
from easy.utils import copy_func
1617

@@ -32,7 +33,15 @@ async def get_obj(self, request: HttpRequest, id: int) -> Any:
3233
GET /{id}
3334
Retrieve a single Object
3435
"""
35-
return await self.service.get_obj(id)
36+
try:
37+
qs = await self.service.get_obj(id)
38+
except Exception as e: # pragma: no cover
39+
logger.error(f"Get Error - {e}", exc_info=True)
40+
return BaseApiResponse(str(e), message="Get Failed", errno=500)
41+
if qs:
42+
return qs
43+
else:
44+
return BaseApiResponse(message="Not Found", errno=404)
3645

3746
async def del_obj(self, request: HttpRequest, id: int) -> Any:
3847
"""

easy/domain/orm.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -83,22 +83,16 @@ def _crud_update_obj(self, pk: int, payload: Dict) -> "BaseApiResponse":
8383
return BaseApiResponse({"pk": pk}, message="Updated.")
8484

8585
def _crud_get_obj(self, pk: int) -> Any:
86-
try:
87-
if self.m2m_fields_list:
88-
qs = self.model.objects.filter(pk=pk).prefetch_related(
89-
self.m2m_fields_list[0].name
90-
)
91-
for f in self.m2m_fields_list[1:]:
92-
qs = qs.prefetch_related(f.name)
93-
else:
94-
qs = self.model.objects.filter(pk=pk)
95-
except Exception as e: # pragma: no cover
96-
logger.error(f"Get Error - {e}", exc_info=True)
97-
return BaseApiResponse(str(e), message="Get Failed", errno=500)
86+
if self.m2m_fields_list:
87+
qs = self.model.objects.filter(pk=pk).prefetch_related(
88+
self.m2m_fields_list[0].name
89+
)
90+
for f in self.m2m_fields_list[1:]:
91+
qs = qs.prefetch_related(f.name)
92+
else:
93+
qs = self.model.objects.filter(pk=pk)
9894
if qs:
9995
return qs.first()
100-
else:
101-
return BaseApiResponse(message="Not Found", errno=404)
10296

10397
def _crud_get_objs_all(self, maximum: int = None, **filters: Any) -> Any:
10498
"""

0 commit comments

Comments
 (0)