decode_workflow.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from typing import Optional
  2. from pydantic import BaseModel, Field
  3. from typing_extensions import Annotated
  4. from utils.general import get_now_ts
  5. from utils.sync_mysql_help import mysql
  6. class DecodeWorkflow(BaseModel):
  7. table_name: Annotated[Optional[str], Field(description='表名', exclude=True)] = 'decode_workflow'
  8. task_id: Annotated[str, Field(description='任务ID')]
  9. video_id: Annotated[Optional[str], Field(description='视频ID', default=None)]
  10. video_url: Annotated[str, Field(description='视频地址')]
  11. title: Annotated[Optional[str], Field(description='视频标题', default=None)]
  12. task_status: Annotated[Optional[int], Field(description='任务状态', default=0)] # 0:待执行 / 1:执行中 / 2:执行成功 3:执行失败
  13. topic_result: Annotated[Optional[str], Field(description='选题结果')]
  14. script_result: Annotated[Optional[str], Field(description='脚本结果')]
  15. created_at: Annotated[Optional[int], Field(description='任务创建时间戳', default_factory=get_now_ts)]
  16. error_reason: Annotated[Optional[str], Field(description='错误原因', default=None)]
  17. type: Annotated[Optional[int], Field(description='任务类型', default=1)] # 0:解码任务 / 1:评估任务
  18. account: Annotated[Optional[str], Field(description='账号', default=None)]
  19. nick_name: Annotated[Optional[str], Field(description='昵称', default=None)]
  20. token_script_use: Annotated[Optional[str], Field(description='脚本使用token', default=None)]
  21. token_topic_use: Annotated[Optional[str], Field(description='选题使用token', default=None)]
  22. def save(self):
  23. record = self.model_dump(exclude={'table_name'})
  24. keys = record.keys()
  25. sql = f'''INSERT INTO {self.table_name} ({", ".join(keys)}) VALUES ({", ".join(["%s"] * len(keys))})'''
  26. mysql.execute(sql, tuple([record[key] for key in keys]))
  27. async def async_save(self):
  28. record = self.model_dump(exclude={'table_name'})
  29. keys = record.keys()
  30. sql = f'''INSERT INTO {self.table_name} ({", ".join(keys)}) VALUES ({", ".join(["%s"] * len(keys))})'''
  31. await mysql.execute(sql, tuple([record[key] for key in keys]))