File: /var/www/quadcode/app/Repository/AbstractQueueRepository.php
<?php
namespace App\Repository;
use App\Models\AbstractQueue;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
abstract class AbstractQueueRepository
{
abstract public static function getQuery(): Builder;
abstract public static function getNewModel();
public static function create(array $data): void
{
$queue = static::getNewModel();
$queue->data = json_encode($data);
$queue->save();
}
public function getNeedToSend(): Collection
{
return static::getQuery()->where('status', AbstractQueue::STATUS_NEW)->get();
}
public function getErrorsCount(): int
{
return static::getQuery()->where('status', AbstractQueue::STATUS_ERROR)->count();
}
}