misc_pterodactyl-panel/app/Repositories/Eloquent/BackupRepository.php

46 lines
1.3 KiB
PHP
Raw Permalink Normal View History

<?php
namespace Pterodactyl\Repositories\Eloquent;
2020-04-10 05:35:38 +00:00
use Carbon\Carbon;
use Pterodactyl\Models\Backup;
use Pterodactyl\Models\Server;
use Illuminate\Support\Collection;
use Illuminate\Database\Eloquent\Relations\HasMany;
class BackupRepository extends EloquentRepository
{
public function model(): string
{
return Backup::class;
}
2020-04-10 05:35:38 +00:00
/**
* Determines if too many backups have been generated by the server.
*/
public function getBackupsGeneratedDuringTimespan(int $server, int $seconds = 600): array|Collection
2020-04-10 05:35:38 +00:00
{
return $this->getBuilder()
->withTrashed()
->where('server_id', $server)
->where(function ($query) {
$query->whereNull('completed_at')
->orWhere('is_successful', '=', true);
})
2020-12-28 00:41:53 +00:00
->where('created_at', '>=', Carbon::now()->subSeconds($seconds)->toDateTimeString())
2020-04-10 05:35:38 +00:00
->get()
->toBase();
}
/**
* Returns a query filtering only non-failed backups for a specific server.
*/
public function getNonFailedBackups(Server $server): HasMany
{
return $server->backups()->where(function ($query) {
$query->whereNull('completed_at')
->orWhere('is_successful', true);
});
}
}