1
0

CloudTaskHandler.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using FreeScheduler;
  2. using FreeSql;
  3. using System.Collections.Generic;
  4. namespace ZhonTai.Admin.Tools.TaskScheduler;
  5. public class CloudTaskHandler : ITaskHandler
  6. {
  7. readonly FreeSqlCloud _fsqlc;
  8. readonly string _dbKey;
  9. private IFreeSql _fsql => _fsqlc.Use(_dbKey);
  10. public CloudTaskHandler(FreeSqlCloud fsqlc, string dbKey)
  11. {
  12. _fsqlc = fsqlc;
  13. _dbKey = dbKey;
  14. }
  15. public IEnumerable<TaskInfo> LoadAll() => _fsql.Select<TaskInfo>().Where(a => a.Status == TaskStatus.Running && (a.Round < 0 || a.CurrentRound < a.Round)).ToList();
  16. public TaskInfo Load(string id) => _fsql.Select<TaskInfo>().Where(a => a.Id == id).First();
  17. public void OnAdd(TaskInfo task) => _fsql.Insert<TaskInfo>().NoneParameter().AppendData(task).ExecuteAffrows();
  18. public void OnRemove(TaskInfo task) => _fsql.Delete<TaskInfo>().Where(a => a.Id == task.Id).ExecuteAffrows();
  19. public void OnExecuted(Scheduler scheduler, TaskInfo task, TaskLog result)
  20. {
  21. _fsql.Transaction(() =>
  22. {
  23. _fsql.Update<TaskInfo>().NoneParameter().SetSource(task)
  24. .UpdateColumns(a => new { a.CurrentRound, a.ErrorTimes, a.LastRunTime, a.Status })
  25. .ExecuteAffrows();
  26. _fsql.Insert<TaskLog>().NoneParameter().AppendData(result).ExecuteAffrows();
  27. });
  28. }
  29. public virtual void OnExecuting(Scheduler scheduler, TaskInfo task)
  30. {
  31. }
  32. }