mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-07-12 16:02:35 +08:00
add workflow oper
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from app.chain import ChainBase
|
from app.chain import ChainBase
|
||||||
|
from app.db.workflow_oper import WorkflowOper
|
||||||
from app.schemas import Workflow
|
from app.schemas import Workflow
|
||||||
|
|
||||||
|
|
||||||
@@ -9,6 +10,10 @@ class WorkflowChain(ChainBase):
|
|||||||
工作流链
|
工作流链
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.workflowoper = WorkflowOper()
|
||||||
|
|
||||||
def process(self, workflow_id: int) -> bool:
|
def process(self, workflow_id: int) -> bool:
|
||||||
"""
|
"""
|
||||||
处理工作流
|
处理工作流
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from datetime import datetime
|
|||||||
|
|
||||||
from sqlalchemy import Column, Integer, JSON, Sequence, String
|
from sqlalchemy import Column, Integer, JSON, Sequence, String
|
||||||
|
|
||||||
from app.db import Base
|
from app.db import Base, db_query
|
||||||
|
|
||||||
|
|
||||||
class Workflow(Base):
|
class Workflow(Base):
|
||||||
@@ -17,8 +17,8 @@ class Workflow(Base):
|
|||||||
description = Column(String)
|
description = Column(String)
|
||||||
# 定时器
|
# 定时器
|
||||||
timer = Column(String)
|
timer = Column(String)
|
||||||
# 状态:N-新建 R-运行中 P-暂停 S-成功 F-失败
|
# 状态:W-等待 R-运行中 P-暂停 S-成功 F-失败
|
||||||
state = Column(String, nullable=False, index=True, default='N')
|
state = Column(String, nullable=False, index=True, default='W')
|
||||||
# 当前执行动作
|
# 当前执行动作
|
||||||
current_action = Column(String)
|
current_action = Column(String)
|
||||||
# 任务执行结果
|
# 任务执行结果
|
||||||
@@ -33,3 +33,13 @@ class Workflow(Base):
|
|||||||
add_time = Column(String, default=datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
|
add_time = Column(String, default=datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
|
||||||
# 最后执行时间
|
# 最后执行时间
|
||||||
last_time = Column(String)
|
last_time = Column(String)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
@db_query
|
||||||
|
def get_enabled_workflows(db):
|
||||||
|
return db.query(Workflow).filter(Workflow.state != 'P').all()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
@db_query
|
||||||
|
def get_by_name(db, name: str):
|
||||||
|
return db.query(Workflow).filter(Workflow.name == name).first()
|
||||||
|
|||||||
38
app/db/workflow_oper.py
Normal file
38
app/db/workflow_oper.py
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
from typing import List, Tuple
|
||||||
|
|
||||||
|
from app.db import DbOper
|
||||||
|
from app.db.models.workflow import Workflow
|
||||||
|
|
||||||
|
|
||||||
|
class WorkflowOper(DbOper):
|
||||||
|
"""
|
||||||
|
工作流管理
|
||||||
|
"""
|
||||||
|
|
||||||
|
def add(self, **kwargs) -> Tuple[bool, str]:
|
||||||
|
"""
|
||||||
|
新增工作流
|
||||||
|
"""
|
||||||
|
wf = Workflow(**kwargs)
|
||||||
|
if not wf.get_by_name(self._db, kwargs.get("name")):
|
||||||
|
wf.create(self._db)
|
||||||
|
return True, "新增工作流成功"
|
||||||
|
return False, "工作流已存在"
|
||||||
|
|
||||||
|
def get(self, wid: int) -> Workflow:
|
||||||
|
"""
|
||||||
|
查询单个工作流
|
||||||
|
"""
|
||||||
|
return Workflow.get(self._db, wid)
|
||||||
|
|
||||||
|
def list_enabled(self) -> List[Workflow]:
|
||||||
|
"""
|
||||||
|
获取启用的工作流列表
|
||||||
|
"""
|
||||||
|
return Workflow.get_enabled_workflows(self._db)
|
||||||
|
|
||||||
|
def get_by_name(self, name: str) -> Workflow:
|
||||||
|
"""
|
||||||
|
按名称获取工作流
|
||||||
|
"""
|
||||||
|
return Workflow.get_by_name(self._db, name)
|
||||||
Reference in New Issue
Block a user