Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pterodactyl
GitHub Repository: pterodactyl/panel
Path: blob/1.0-develop/app/Repositories/Eloquent/BackupRepository.php
7460 views
1
<?php
2
3
namespace Pterodactyl\Repositories\Eloquent;
4
5
use Carbon\Carbon;
6
use Pterodactyl\Models\Backup;
7
use Pterodactyl\Models\Server;
8
use Illuminate\Support\Collection;
9
use Illuminate\Database\Eloquent\Relations\HasMany;
10
11
class BackupRepository extends EloquentRepository
12
{
13
public function model(): string
14
{
15
return Backup::class;
16
}
17
18
/**
19
* Determines if too many backups have been generated by the server.
20
*/
21
public function getBackupsGeneratedDuringTimespan(int $server, int $seconds = 600): array|Collection
22
{
23
return $this->getBuilder()
24
->withTrashed()
25
->where('server_id', $server)
26
->where(function ($query) {
27
$query->whereNull('completed_at')
28
->orWhere('is_successful', '=', true);
29
})
30
->where('created_at', '>=', Carbon::now()->subSeconds($seconds)->toDateTimeString())
31
->get()
32
->toBase();
33
}
34
35
/**
36
* Returns a query filtering only non-failed backups for a specific server.
37
*/
38
public function getNonFailedBackups(Server $server): HasMany
39
{
40
return $server->backups()->where(function ($query) {
41
$query->whereNull('completed_at')
42
->orWhere('is_successful', true);
43
});
44
}
45
}
46
47