workflow.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from sqlalchemy.orm import Session
  2. from app.models.workflow import WorkflowDef, WorkflowNode
  3. from app.services.base import CrudService
  4. class WorkflowService:
  5. @staticmethod
  6. def get_by_id(db: Session, id: int) -> WorkflowDef | None:
  7. return CrudService.get_by_id(WorkflowDef, db, id)
  8. @staticmethod
  9. def get_paged(db: Session, page: int, page_size: int, filters: list | None = None):
  10. return CrudService.get_paged(WorkflowDef, db, page, page_size, filters)
  11. @staticmethod
  12. def create(db: Session, obj_in: dict) -> WorkflowDef:
  13. return CrudService.create(WorkflowDef, db, obj_in)
  14. @staticmethod
  15. def update(db: Session, id: int, obj_in: dict) -> WorkflowDef | None:
  16. return CrudService.update(WorkflowDef, db, id, obj_in)
  17. @staticmethod
  18. def soft_delete(db: Session, id: int) -> bool:
  19. return CrudService.soft_delete(WorkflowDef, db, id)
  20. @staticmethod
  21. def get_by_biz_type(db: Session, biz_type: str) -> WorkflowDef | None:
  22. return (
  23. db.query(WorkflowDef)
  24. .filter(WorkflowDef.biz_type == biz_type, WorkflowDef.del_flag == 0)
  25. .first()
  26. )
  27. @staticmethod
  28. def save_nodes(db: Session, wf_id: int, nodes: list[dict]) -> list[WorkflowNode]:
  29. db.query(WorkflowNode).filter(WorkflowNode.wf_id == wf_id).delete()
  30. created: list[WorkflowNode] = []
  31. for node_data in nodes:
  32. node_data["wf_id"] = wf_id
  33. node = WorkflowNode(**node_data)
  34. db.add(node)
  35. created.append(node)
  36. db.flush()
  37. return created