Job.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\Core\Queue\Models;
  3. use ThurData\Servers\KerioEmail\Core\Models\ExtendedEloquentModel;
  4. /**
  5. * Class Job
  6. * @package ThurData\Servers\KerioEmail\Core\Job\Models
  7. * @var $job
  8. * @var $data
  9. * @var $queue
  10. * @var $status
  11. *
  12. * @todo - obsługa dzieci
  13. */
  14. class Job extends ExtendedEloquentModel
  15. {
  16. const STATUS_RUNNING = 'running';
  17. const STATUS_FINISHED = 'finished';
  18. const STATUS_ERROR = 'error';
  19. const STATUS_WAITING = 'waiting';
  20. /**
  21. * @var string
  22. */
  23. protected $table = 'Job';
  24. /**
  25. * @return JobLog::class[]
  26. */
  27. public function logs()
  28. {
  29. return $this->hasMany(JobLog::class, 'job_id');
  30. }
  31. /**
  32. * @return $this
  33. */
  34. public function setRunning()
  35. {
  36. $this->setStatus(self::STATUS_RUNNING);
  37. return $this;
  38. }
  39. /**
  40. * @return $this
  41. */
  42. public function setFinished()
  43. {
  44. $this->setStatus(self::STATUS_FINISHED);
  45. return $this;
  46. }
  47. /**
  48. * @return $this
  49. */
  50. public function setWaiting()
  51. {
  52. $this->setStatus(self::STATUS_WAITING);
  53. return $this;
  54. }
  55. /**
  56. * @return $this
  57. */
  58. public function setError()
  59. {
  60. $this->setStatus(self::STATUS_ERROR);
  61. return $this;
  62. }
  63. /**
  64. * @param $time
  65. * @return $this
  66. */
  67. public function setRetryAfter($time)
  68. {
  69. $this->retry_after = $time;
  70. $this->save();
  71. return $this;
  72. }
  73. /**
  74. * @param $status
  75. * @return $this
  76. */
  77. public function setStatus($status)
  78. {
  79. $this->status = $status;
  80. $this->save();
  81. return $this;
  82. }
  83. /**
  84. * @return $this
  85. */
  86. public function increaseRetryCount()
  87. {
  88. $this->retry_count++;
  89. $this->save();
  90. return $this;
  91. }
  92. }