diff --git a/app/middlewares/app_middlewares.py b/app/middlewares/app_middlewares.py index 8152408..2f989c9 100644 --- a/app/middlewares/app_middlewares.py +++ b/app/middlewares/app_middlewares.py @@ -63,11 +63,13 @@ def add_app_middlewares(app: FastAPI): try: response = await call_next(request) except HTTPException as e: + print(e) if e.status_code == status.HTTP_401_UNAUTHORIZED: return JSONResponse(content={"message": e.detail}, status_code=status.HTTP_401_UNAUTHORIZED) else: return JSONResponse(content={"message": e.detail}, status_code=status.HTTP_500_INTERNAL_SERVER_ERROR) except Exception as e: + print(e) return JSONResponse(content={"message": str(e)}, status_code=status.HTTP_500_INTERNAL_SERVER_ERROR) return response diff --git a/app/model/PosModel.py b/app/model/PosModel.py index 64ce63d..8e1727a 100644 --- a/app/model/PosModel.py +++ b/app/model/PosModel.py @@ -1,7 +1,8 @@ from typing import Optional from pydantic import computed_field -from sqlmodel import Field, Relationship +from sqlalchemy.orm import selectinload +from sqlmodel import Field, Relationship, select from app.model.BasicModel import BasicModel from app.model.OrgModel import OrgModel @@ -21,7 +22,7 @@ class PosModel(BasicModel, table=True): parent_code: str = Field( default=None, - description="职位编码", + description="父职位编码", foreign_key="pl_pos.code", # 添加外键约束 nullable=True ) @@ -37,36 +38,46 @@ class PosModel(BasicModel, table=True): @computed_field @property def parent_name(self) -> Optional[str]: - return self.parent.name if self.parent else None + try: + return self.parent.name if self.parent else None + except: + return None @parent_name.setter def parent_name(self, value: Optional[str]) -> None: pass - # /*---------------------------------------organization_code-------------------------------------------*/ + # # /*---------------------------------------organization_code-------------------------------------------*/ + # + # organization_code: str = Field( + # default=None, + # description="所属组织编码", + # foreign_key="pl_org.code", # 添加外键约束 + # nullable=True + # ) + # + # organization: Optional["OrgModel"] = Relationship( + # sa_relationship_kwargs={ + # "foreign_keys": "PosModel.organization_code", + # "remote_side": "OrgModel.code", + # "uselist": False + # } + # ) + # + # @computed_field + # @property + # def organization_name(self) -> Optional[str]: + # try: + # return self.organization.name if self.organization else None + # except: + # return None + # + # @organization_name.setter + # def organization_name(self, value: Optional[str]) -> None: + # pass - organization_code: str = Field( - default=None, - description="所属组织编码", - foreign_key="pl_org.code", # 添加外键约束 - nullable=True - ) - organization: Optional["OrgModel"] = Relationship( - sa_relationship_kwargs={ - "foreign_keys": "PosModel.organization_code", - "remote_side": "OrgModel.code", - "uselist": False - } - ) - - @computed_field - @property - def organization_name(self) -> Optional[str]: - return self.organization.name if self.organization else None - - @organization_name.setter - def organization_name(self, value: Optional[str]) -> None: - pass - -PosService = create_model_service(PosModel) +PosService = create_model_service( + Cls=PosModel, + custom_query=lambda: select(PosModel).options(selectinload(PosModel.parent)), +)