Add core logic to allow for limited databases and allocations
This commit is contained in:
parent
5f6c153537
commit
87b96bdfc8
8 changed files with 128 additions and 43 deletions
|
@ -13,7 +13,7 @@ class UpdateServerBuildConfigurationRequest extends ServerWriteRequest
|
|||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
$rules = Server::getUpdateRulesForId($this->route()->parameter('server')->id);
|
||||
$rules = Server::getUpdateRulesForId($this->getModel(Server::class)->id);
|
||||
|
||||
return [
|
||||
'allocation' => $rules['allocation_id'],
|
||||
|
@ -26,6 +26,9 @@ class UpdateServerBuildConfigurationRequest extends ServerWriteRequest
|
|||
'add_allocations.*' => 'integer',
|
||||
'remove_allocations' => 'bail|array',
|
||||
'remove_allocations.*' => 'integer',
|
||||
'feature_limits' => 'required|array',
|
||||
'feature_limits.databases' => $rules['database_limit'],
|
||||
'feature_limits.allocations' => $rules['allocation_limit'],
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -39,7 +42,9 @@ class UpdateServerBuildConfigurationRequest extends ServerWriteRequest
|
|||
$data = parent::validated();
|
||||
|
||||
$data['allocation_id'] = $data['allocation'];
|
||||
unset($data['allocation']);
|
||||
$data['database_limit'] = $data['feature_limits']['databases'];
|
||||
$data['allocation_limit'] = $data['feature_limits']['allocations'];
|
||||
unset($data['allocation'], $data['feature_limits']);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
@ -56,6 +61,8 @@ class UpdateServerBuildConfigurationRequest extends ServerWriteRequest
|
|||
'remove_allocations' => 'allocations to remove',
|
||||
'add_allocations.*' => 'allocation to add',
|
||||
'remove_allocations.*' => 'allocation to remove',
|
||||
'feature_limits.databases' => 'Database Limit',
|
||||
'feature_limits.allocations' => 'Allocation Limit',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,6 +69,8 @@ class Server extends Model implements CleansAttributes, ValidableContract
|
|||
'skip_scripts' => 'sometimes',
|
||||
'image' => 'required',
|
||||
'startup' => 'required',
|
||||
'database_limit' => 'present',
|
||||
'allocation_limit' => 'present',
|
||||
];
|
||||
|
||||
/**
|
||||
|
@ -93,6 +95,8 @@ class Server extends Model implements CleansAttributes, ValidableContract
|
|||
'skip_scripts' => 'boolean',
|
||||
'image' => 'string|max:255',
|
||||
'installed' => 'boolean',
|
||||
'database_limit' => 'nullable|integer|min:0',
|
||||
'allocation_limit' => 'nullable|integer|min:0',
|
||||
];
|
||||
|
||||
/**
|
||||
|
@ -116,6 +120,8 @@ class Server extends Model implements CleansAttributes, ValidableContract
|
|||
'egg_id' => 'integer',
|
||||
'pack_id' => 'integer',
|
||||
'installed' => 'integer',
|
||||
'database_limit' => 'integer',
|
||||
'allocation_limit' => 'integer',
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
@ -91,6 +91,8 @@ class BuildModificationService
|
|||
'cpu' => array_get($data, 'cpu'),
|
||||
'disk' => array_get($data, 'disk'),
|
||||
'allocation_id' => array_get($data, 'allocation_id'),
|
||||
'database_limit' => array_get($data, 'database_limit'),
|
||||
'allocation_limit' => array_get($data, 'allocation_limit'),
|
||||
]);
|
||||
|
||||
$allocations = $this->allocationRepository->findWhere([['server_id', '=', $server->id]]);
|
||||
|
|
|
@ -75,6 +75,10 @@ class ServerTransformer extends BaseTransformer
|
|||
'io' => $server->io,
|
||||
'cpu' => $server->cpu,
|
||||
],
|
||||
'feature_limits' => [
|
||||
'databases' => $server->database_limit,
|
||||
'allocations' => $server->allocation_limit,
|
||||
],
|
||||
'user' => $server->owner_id,
|
||||
'node' => $server->node_id,
|
||||
'allocation' => $server->allocation_id,
|
||||
|
|
|
@ -36,6 +36,10 @@ class ServerTransformer extends BaseClientTransformer
|
|||
'io' => $server->io,
|
||||
'cpu' => $server->cpu,
|
||||
],
|
||||
'feature_limits' => [
|
||||
'databases' => $server->database_limit,
|
||||
'allocations' => $server->allocation_limit,
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue