Skip to content

Commit 5763493

Browse files
committed
Allow setting the backup limit via the API; closes pterodactyl#2535
1 parent 35f24e7 commit 5763493

File tree

5 files changed

+14
-9
lines changed

5 files changed

+14
-9
lines changed

app/Http/Requests/Api/Application/Servers/StoreServerRequest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public function rules(): array
5555
'feature_limits' => 'required|array',
5656
'feature_limits.databases' => $rules['database_limit'],
5757
'feature_limits.allocations' => $rules['allocation_limit'],
58+
'feature_limits.backups' => $rules['backup_limit'],
5859

5960
// Placeholders for rules added in withValidator() function.
6061
'allocation.default' => '',
@@ -102,6 +103,7 @@ public function validated()
102103
'start_on_completion' => array_get($data, 'start_on_completion', false),
103104
'database_limit' => array_get($data, 'feature_limits.databases'),
104105
'allocation_limit' => array_get($data, 'feature_limits.allocations'),
106+
'backup_limit' => array_get($data, 'feature_limits.backups'),
105107
];
106108
}
107109

app/Http/Requests/Api/Application/Servers/UpdateServerBuildConfigurationRequest.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public function rules(): array
4747
'feature_limits' => 'required|array',
4848
'feature_limits.databases' => $rules['database_limit'],
4949
'feature_limits.allocations' => $rules['allocation_limit'],
50+
'feature_limits.backups' => $rules['backup_limit'],
5051
];
5152
}
5253

@@ -60,8 +61,9 @@ public function validated()
6061
$data = parent::validated();
6162

6263
$data['allocation_id'] = $data['allocation'];
63-
$data['database_limit'] = $data['feature_limits']['databases'];
64-
$data['allocation_limit'] = $data['feature_limits']['allocations'];
64+
$data['database_limit'] = $data['feature_limits']['databases'] ?? null;
65+
$data['allocation_limit'] = $data['feature_limits']['allocations'] ?? null;
66+
$data['backup_limit'] = $data['feature_limits']['backups'] ?? null;
6567
unset($data['allocation'], $data['feature_limits']);
6668

6769
// Adjust the limits field to match what is expected by the model.
@@ -90,6 +92,7 @@ public function attributes()
9092
'remove_allocations.*' => 'allocation to remove',
9193
'feature_limits.databases' => 'Database Limit',
9294
'feature_limits.allocations' => 'Allocation Limit',
95+
'feature_limits.backups' => 'Backup Limit',
9396
];
9497
}
9598

app/Models/Server.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ class Server extends Model
122122
'installed' => 'in:0,1,2',
123123
'database_limit' => 'present|nullable|integer|min:0',
124124
'allocation_limit' => 'sometimes|nullable|integer|min:0',
125-
'backup_limit' => 'present|integer|min:0',
125+
'backup_limit' => 'present|nullable|integer|min:0',
126126
];
127127

128128
/**

app/Services/Servers/BuildModificationService.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ public function handle(Server $server, array $data)
101101
'threads' => array_get($data, 'threads'),
102102
'disk' => array_get($data, 'disk'),
103103
'allocation_id' => array_get($data, 'allocation_id'),
104-
'database_limit' => array_get($data, 'database_limit', 0),
105-
'allocation_limit' => array_get($data, 'allocation_limit', 0),
106-
'backup_limit' => array_get($data, 'backup_limit', 0),
104+
'database_limit' => array_get($data, 'database_limit', 0) ?? null,
105+
'allocation_limit' => array_get($data, 'allocation_limit', 0) ?? null,
106+
'backup_limit' => array_get($data, 'backup_limit', 0) ?? null,
107107
]);
108108

109109
$updateData = $this->structureService->handle($server);

tests/Integration/Services/Servers/ServerCreationServiceTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,9 @@ public function testServerIsCreatedWithDeploymentObject()
144144

145145
$this->assertFalse($response->suspended);
146146
$this->assertTrue($response->oom_disabled);
147-
$this->assertEmpty($response->database_limit);
148-
$this->assertEmpty($response->allocation_limit);
149-
$this->assertEmpty($response->backup_limit);
147+
$this->assertSame(0, $response->database_limit);
148+
$this->assertSame(0, $response->allocation_limit);
149+
$this->assertSame(0, $response->backup_limit);
150150
}
151151

152152
/**

0 commit comments

Comments
 (0)