This commit is contained in:
35
database/tscheduler/crud.py
Normal file
35
database/tscheduler/crud.py
Normal file
@ -0,0 +1,35 @@
|
||||
from database.tscheduler.model import TScheduler
|
||||
|
||||
def create_task(db, task: TScheduler):
|
||||
db.add(task)
|
||||
db.commit()
|
||||
db.refresh(task)
|
||||
return task
|
||||
|
||||
def get_task_by_id(db, task_id: int):
|
||||
return db.query(TScheduler).filter(TScheduler.id == task_id).first()
|
||||
|
||||
def get_active_tasks(db):
|
||||
return db.query(TScheduler).filter(TScheduler.active == True).all()
|
||||
|
||||
def get_tasks_by_executor(db, executor: str):
|
||||
return db.query(TScheduler).filter(
|
||||
TScheduler.executor == executor,
|
||||
TScheduler.active == True
|
||||
).all()
|
||||
|
||||
def update_task(db, task_id: int, updates: dict):
|
||||
task = db.query(TScheduler).filter(TScheduler.id == task_id).first()
|
||||
if task:
|
||||
for key, value in updates.items():
|
||||
setattr(task, key, value)
|
||||
db.commit()
|
||||
db.refresh(task)
|
||||
return task
|
||||
|
||||
def delete_task(db, task_id: int):
|
||||
task = db.query(TScheduler).filter(TScheduler.id == task_id).first()
|
||||
if task:
|
||||
db.delete(task)
|
||||
db.commit()
|
||||
return task
|
||||
26
database/tscheduler/model.py
Normal file
26
database/tscheduler/model.py
Normal file
@ -0,0 +1,26 @@
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
from sqlalchemy import Column, Integer, String, Boolean, Text, DateTime
|
||||
from database.database import Base
|
||||
|
||||
@dataclass
|
||||
class TScheduler(Base):
|
||||
__tablename__ = 't_scheduler'
|
||||
|
||||
id: int = Column(Integer, primary_key=True, autoincrement=True, comment='自动递增的唯一任务ID')
|
||||
task_name: str = Column(String(64), nullable=False, comment='任务名称')
|
||||
trigger: str = Column(String(10), nullable=False, comment='调度方式,interval、cron、date')
|
||||
interval_seconds: Optional[int] = Column(Integer, nullable=True, comment='固定时间间隔(秒),用于 interval 类型')
|
||||
cron_expression: Optional[str] = Column(String(255), nullable=True, comment='CRON 表达式,用于 cron 类型')
|
||||
execution_date: Optional[datetime] = Column(DateTime, nullable=True, comment='执行时间,用于 date 类型')
|
||||
task_payload: Optional[str] = Column(Text, nullable=True, comment='任务相关的参数或数据')
|
||||
active: Optional[bool] = Column(Boolean, default=False, nullable=True, comment='任务状态,是否启用')
|
||||
executor: Optional[str] = Column(String(32), nullable=True, comment='任务执行者')
|
||||
handler: Optional[str] = Column(String(32), nullable=True, comment='任务执行程序')
|
||||
last_run: Optional[datetime] = Column(DateTime, nullable=True, comment='上一次执行时间')
|
||||
next_run: Optional[datetime] = Column(DateTime, nullable=True, comment='下一次执行时间')
|
||||
create_time: datetime = Column(DateTime, default=datetime.utcnow, nullable=True, comment='创建时间')
|
||||
update_time: datetime = Column(DateTime, default=datetime.utcnow, nullable=True, comment='更新时间')
|
||||
module_path: Optional[str] = Column(String(255), nullable=True, comment='任务逻辑所在模块名称')
|
||||
function_name: Optional[str] = Column(String(256), nullable=True, comment='任务逻辑的函数名称')
|
||||
Reference in New Issue
Block a user