Add service-specific configuration fields and save

them to the database
This commit is contained in:
Andras Bacsai
2023-11-13 11:09:21 +01:00
parent 95baec99dd
commit ce0f560c44
12 changed files with 292 additions and 46 deletions

View File

@@ -7,17 +7,34 @@ use Livewire\Component;
class StackForm extends Component
{
public $service;
public $isConfigurationRequired = false;
public $fields = [];
protected $listeners = ["saveCompose"];
protected $rules = [
public $rules = [
'service.docker_compose_raw' => 'required',
'service.docker_compose' => 'required',
'service.name' => 'required',
'service.description' => 'nullable',
];
public function mount () {
if ($this->service->applications->filter(fn($app) => str($app->image)->contains('minio/minio'))->count() > 0) {
$this->isConfigurationRequired = true;
public $validationAttributes = [];
public function mount()
{
$extraFields = $this->service->extraFields();
foreach ($extraFields as $serviceName => $fields) {
foreach ($fields as $fieldKey => $field) {
$key = data_get($field, 'key');
$value = data_get($field, 'value');
$rules = data_get($field, 'rules');
$isPassword = data_get($field, 'isPassword');
$this->fields[$key] = [
"serviceName" => $serviceName,
"key" => $key,
"name" => $fieldKey,
"value" => $value,
"isPassword" => $isPassword,
];
$this->rules["fields.$key.value"] = $rules;
$this->validationAttributes["fields.$key.value"] = $fieldKey;
}
}
}
public function saveCompose($raw)
@@ -32,6 +49,7 @@ class StackForm extends Component
try {
$this->validate();
$this->service->save();
$this->service->saveExtraFields($this->fields);
$this->service->parse();
$this->service->refresh();
$this->service->saveComposeConfigs();