feat: RelProjUserModel

This commit is contained in:
martsforever
2025-08-23 15:20:12 +08:00
parent 232c330418
commit 7adf655f8e
2 changed files with 76 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
from typing import Optional
from pydantic import computed_field
from sqlalchemy.orm import selectinload
from sqlmodel import Field, Relationship, select
from app.model.BasicModel import BasicModel
from app.model.ProjectModel import ProjectModel
from app.model.UserModel import UserServiceModel
from app.utils.create_module_service import create_model_service
class RelProjUserModel(BasicModel, table=True):
__tablename__ = "pl_rel_proj_user"
# /*---------------------------------------user_id-------------------------------------------*/
user_id: str = Field(
default=None,
description="项目成员id",
foreign_key="pl_user.id", # 添加外键约束
nullable=True
)
user_rel: Optional["UserServiceModel"] = Relationship(
sa_relationship_kwargs={
"foreign_keys": "RelProjUserModel.user_id",
"remote_side": "UserServiceModel.id",
"uselist": False
}
)
@computed_field
@property
def user(self) -> Optional[UserServiceModel]:
return self.user_rel
@user.setter
def user(self, value: Optional[UserServiceModel]) -> None:
pass
# /*---------------------------------------proj_id-------------------------------------------*/
proj_id: str = Field(
default=None,
description="项目id",
foreign_key="pl_project.id", # 添加外键约束
nullable=True
)
proj_rel: Optional["ProjectModel"] = Relationship(
sa_relationship_kwargs={
"foreign_keys": "RelProjUserModel.proj_id",
"remote_side": "ProjectModel.id",
"uselist": False
}
)
@computed_field
@property
def project(self) -> Optional[ProjectModel]:
return self.proj_rel
@project.setter
def project(self, value: Optional[ProjectModel]) -> None:
pass
RelProjUserService = create_model_service(
Cls=RelProjUserModel,
custom_query=lambda: select(RelProjUserModel)
.options(selectinload(RelProjUserModel.user_rel))
.options(selectinload(RelProjUserModel.proj_rel)),
)
+2
View File
@@ -26,6 +26,7 @@ from app.model.LlmProduct import LlmProductService
from app.model.OrgModel import OrgService from app.model.OrgModel import OrgService
from app.model.PosModel import PosService from app.model.PosModel import PosService
from app.model.ProjectModel import ProjectService from app.model.ProjectModel import ProjectService
from app.model.RelProjUserModel import RelProjUserService
from app.run_uvicorn import run_uvicorn from app.run_uvicorn import run_uvicorn
from app.utils.ModelInputSchema import ModelInputSchema from app.utils.ModelInputSchema import ModelInputSchema
from app.utils.add_async_route import add_async_route from app.utils.add_async_route import add_async_route
@@ -85,6 +86,7 @@ LgChatService.add_route(app=app, path="/lg_chat")
OrgService.add_route(app=app, path="/org") OrgService.add_route(app=app, path="/org")
PosService.add_route(app=app, path="/pos") PosService.add_route(app=app, path="/pos")
ProjectService.add_route(app=app, path="/project") ProjectService.add_route(app=app, path="/project")
RelProjUserService.add_route(app=app, path="/rel_proj_user")
if __name__ == "__main__": if __name__ == "__main__":
run_uvicorn() run_uvicorn()