Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here

codelabmw/larakits

23 stars
2 code files
View codelabmw/larakits on GitHub

app/Enums/TaskStatus.php

Open in GitHub
enum TaskStatus: string
{
case OPEN = 'open';
case PENDING = 'pending';
case SUCCESS = 'success';
case FAILED = 'failed';
}

app/Models/Task.php

Open in GitHub
use App\Enums\TaskStatus;
use Illuminate\Database\Eloquent\Model;
 
class Task extends Model
{
protected $fillable = [
'status',
'exception',
'should_run_at',
];
 
protected $casts = [
'status' => TaskStatus::class,
'should_run_at' => 'datetime',
];
 
public static function openTask(): ?self
{
return self::query()->where('status', TaskStatus::OPEN->value)->latest()->first();
}
 
public function wasRunSuccessfully(): bool
{
return $this->status === TaskStatus::SUCCESS;
}
 
public function updateStatus(TaskStatus $status): void
{
$this->status = $status;
$this->save();
}
 
public function markPending(): void
{
$this->updateStatus(TaskStatus::PENDING);
}
 
public function markFailed(?string $exception = null): void
{
$this->status = TaskStatus::FAILED;
$this->exception = $exception;
$this->save();
}
 
public function markSuccessful(): void
{
$this->updateStatus(TaskStatus::SUCCESS);
}
 
// ...
}

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.