36 lines
1.1 KiB
PHP
36 lines
1.1 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace App\Repositories;
|
|
|
|
use App\Enums\CaptchaLogType;
|
|
use App\Models\CaptchaLog;
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
use Illuminate\Database\Eloquent\Collection;
|
|
|
|
final class CaptchaLogRepository
|
|
{
|
|
public function countByType(CaptchaLogType $type, ?int $captchaId = null): int
|
|
{
|
|
return CaptchaLog::query()
|
|
->when($captchaId, function (Builder $query, int $captchaId) {
|
|
$query->where('captcha_id', $captchaId);
|
|
})
|
|
->where('type', '=', $type)
|
|
->count();
|
|
}
|
|
|
|
public function getCaptchaLogsByTypes(array $types, ?int $captchaId = null, ?int $limit = null): Collection
|
|
{
|
|
return CaptchaLog::query()
|
|
->when($captchaId, function (Builder $query, int $captchaId) {
|
|
$query->where('captcha_id', $captchaId);
|
|
})
|
|
->when($limit, function (Builder $query, int $limit) {
|
|
$query->limit($limit);
|
|
})
|
|
->whereIn('type', $types)
|
|
->latest()
|
|
->get();
|
|
}
|
|
}
|