feat: 拆分project model与project service
This commit is contained in:
+24
-12
@@ -1,12 +1,11 @@
|
||||
from decimal import Decimal
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import computed_field
|
||||
from sqlalchemy.orm import selectinload
|
||||
from sqlmodel import Field, Relationship, select
|
||||
from pydantic import computed_field, PrivateAttr
|
||||
from sqlmodel import Field, Relationship
|
||||
|
||||
from app.model.BasicModel import BasicModel
|
||||
from app.model.UserModel import UserServiceModel
|
||||
from app.utils.create_module_service import create_model_service
|
||||
|
||||
|
||||
class ProjectModel(BasicModel, table=True):
|
||||
@@ -17,6 +16,27 @@ class ProjectModel(BasicModel, table=True):
|
||||
budget: float = Field(default=None, description="项目预算金额")
|
||||
version: int = Field(default=None, description="项目版本号")
|
||||
|
||||
# 使用 PrivateAttr 声明私有属性
|
||||
_spent: Optional[Decimal] = PrivateAttr(default=None)
|
||||
_balance: Optional[Decimal] = PrivateAttr(default=None)
|
||||
|
||||
# 属性访问器
|
||||
@property
|
||||
def spent(self) -> Optional[Decimal]:
|
||||
return self._spent
|
||||
|
||||
@spent.setter
|
||||
def spent(self, value: Optional[Decimal]) -> None:
|
||||
self._spent = value
|
||||
|
||||
@property
|
||||
def balance(self) -> Optional[Decimal]:
|
||||
return self._balance
|
||||
|
||||
@balance.setter
|
||||
def balance(self, value: Optional[Decimal]) -> None:
|
||||
self._balance = value
|
||||
|
||||
# /*---------------------------------------leader_id-------------------------------------------*/
|
||||
|
||||
leader_id: str = Field(
|
||||
@@ -42,11 +62,3 @@ class ProjectModel(BasicModel, table=True):
|
||||
@leader_name.setter
|
||||
def leader_name(self, value: Optional[str]) -> None:
|
||||
pass
|
||||
|
||||
|
||||
ProjectService = create_model_service(
|
||||
Cls=ProjectModel,
|
||||
custom_query=lambda: select(ProjectModel).options(
|
||||
selectinload(ProjectModel.leader),
|
||||
),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user