mirror of
https://github.com/coollabsio/coolify.git
synced 2026-03-11 08:55:47 +00:00
feat: customizable database proxy timeouts
This commit is contained in:
parent
f77a2674fc
commit
89fd4c52bc
20 changed files with 184 additions and 18 deletions
|
|
@ -55,6 +55,8 @@ class StartDatabaseProxy
|
||||||
if (isDev()) {
|
if (isDev()) {
|
||||||
$configuration_dir = '/var/lib/docker/volumes/coolify_dev_coolify_data/_data/databases/'.$database->uuid.'/proxy';
|
$configuration_dir = '/var/lib/docker/volumes/coolify_dev_coolify_data/_data/databases/'.$database->uuid.'/proxy';
|
||||||
}
|
}
|
||||||
|
$proxyTimeout = $database->proxy_timeout ?? 1800; // Default to 30 minutes if not set
|
||||||
|
$timeoutDirective = $proxyTimeout > 0 ? "proxy_timeout {$proxyTimeout}s;" : "";
|
||||||
$nginxconf = <<<EOF
|
$nginxconf = <<<EOF
|
||||||
user nginx;
|
user nginx;
|
||||||
worker_processes auto;
|
worker_processes auto;
|
||||||
|
|
@ -65,10 +67,11 @@ class StartDatabaseProxy
|
||||||
worker_connections 1024;
|
worker_connections 1024;
|
||||||
}
|
}
|
||||||
stream {
|
stream {
|
||||||
server {
|
server {
|
||||||
listen $database->public_port;
|
listen $database->public_port;
|
||||||
proxy_pass $containerName:$internalPort;
|
proxy_pass $containerName:$internalPort;
|
||||||
}
|
{$timeoutDirective}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
EOF;
|
EOF;
|
||||||
$docker_compose = [
|
$docker_compose = [
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,8 @@ class General extends Component
|
||||||
|
|
||||||
public ?int $publicPort = null;
|
public ?int $publicPort = null;
|
||||||
|
|
||||||
|
public ?int $proxyTimeout = null;
|
||||||
|
|
||||||
public ?string $customDockerRunOptions = null;
|
public ?string $customDockerRunOptions = null;
|
||||||
|
|
||||||
public ?string $dbUrl = null;
|
public ?string $dbUrl = null;
|
||||||
|
|
@ -80,6 +82,7 @@ class General extends Component
|
||||||
'portsMappings' => 'nullable|string',
|
'portsMappings' => 'nullable|string',
|
||||||
'isPublic' => 'nullable|boolean',
|
'isPublic' => 'nullable|boolean',
|
||||||
'publicPort' => 'nullable|integer',
|
'publicPort' => 'nullable|integer',
|
||||||
|
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
|
||||||
'customDockerRunOptions' => 'nullable|string',
|
'customDockerRunOptions' => 'nullable|string',
|
||||||
'dbUrl' => 'nullable|string',
|
'dbUrl' => 'nullable|string',
|
||||||
'dbUrlPublic' => 'nullable|string',
|
'dbUrlPublic' => 'nullable|string',
|
||||||
|
|
@ -115,6 +118,7 @@ class General extends Component
|
||||||
$this->database->ports_mappings = $this->portsMappings;
|
$this->database->ports_mappings = $this->portsMappings;
|
||||||
$this->database->is_public = $this->isPublic;
|
$this->database->is_public = $this->isPublic;
|
||||||
$this->database->public_port = $this->publicPort;
|
$this->database->public_port = $this->publicPort;
|
||||||
|
$this->database->proxy_timeout = $this->proxyTimeout;
|
||||||
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
||||||
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
||||||
$this->database->save();
|
$this->database->save();
|
||||||
|
|
@ -130,6 +134,7 @@ class General extends Component
|
||||||
$this->portsMappings = $this->database->ports_mappings;
|
$this->portsMappings = $this->database->ports_mappings;
|
||||||
$this->isPublic = $this->database->is_public;
|
$this->isPublic = $this->database->is_public;
|
||||||
$this->publicPort = $this->database->public_port;
|
$this->publicPort = $this->database->public_port;
|
||||||
|
$this->proxyTimeout = $this->database->proxy_timeout;
|
||||||
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
||||||
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
||||||
$this->dbUrl = $this->database->internal_db_url;
|
$this->dbUrl = $this->database->internal_db_url;
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,8 @@ class General extends Component
|
||||||
|
|
||||||
public ?int $publicPort = null;
|
public ?int $publicPort = null;
|
||||||
|
|
||||||
|
public ?int $proxyTimeout = null;
|
||||||
|
|
||||||
public ?string $customDockerRunOptions = null;
|
public ?string $customDockerRunOptions = null;
|
||||||
|
|
||||||
public ?string $dbUrl = null;
|
public ?string $dbUrl = null;
|
||||||
|
|
@ -91,6 +93,7 @@ class General extends Component
|
||||||
'portsMappings' => 'nullable|string',
|
'portsMappings' => 'nullable|string',
|
||||||
'isPublic' => 'nullable|boolean',
|
'isPublic' => 'nullable|boolean',
|
||||||
'publicPort' => 'nullable|integer',
|
'publicPort' => 'nullable|integer',
|
||||||
|
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
|
||||||
'customDockerRunOptions' => 'nullable|string',
|
'customDockerRunOptions' => 'nullable|string',
|
||||||
'dbUrl' => 'nullable|string',
|
'dbUrl' => 'nullable|string',
|
||||||
'dbUrlPublic' => 'nullable|string',
|
'dbUrlPublic' => 'nullable|string',
|
||||||
|
|
@ -124,6 +127,7 @@ class General extends Component
|
||||||
$this->database->ports_mappings = $this->portsMappings;
|
$this->database->ports_mappings = $this->portsMappings;
|
||||||
$this->database->is_public = $this->isPublic;
|
$this->database->is_public = $this->isPublic;
|
||||||
$this->database->public_port = $this->publicPort;
|
$this->database->public_port = $this->publicPort;
|
||||||
|
$this->database->proxy_timeout = $this->proxyTimeout;
|
||||||
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
||||||
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
||||||
$this->database->enable_ssl = $this->enable_ssl;
|
$this->database->enable_ssl = $this->enable_ssl;
|
||||||
|
|
@ -139,6 +143,7 @@ class General extends Component
|
||||||
$this->portsMappings = $this->database->ports_mappings;
|
$this->portsMappings = $this->database->ports_mappings;
|
||||||
$this->isPublic = $this->database->is_public;
|
$this->isPublic = $this->database->is_public;
|
||||||
$this->publicPort = $this->database->public_port;
|
$this->publicPort = $this->database->public_port;
|
||||||
|
$this->proxyTimeout = $this->database->proxy_timeout;
|
||||||
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
||||||
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
||||||
$this->enable_ssl = $this->database->enable_ssl;
|
$this->enable_ssl = $this->database->enable_ssl;
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ class General extends Component
|
||||||
|
|
||||||
public ?int $publicPort = null;
|
public ?int $publicPort = null;
|
||||||
|
|
||||||
|
public ?int $proxyTimeout = null;
|
||||||
|
|
||||||
public ?string $customDockerRunOptions = null;
|
public ?string $customDockerRunOptions = null;
|
||||||
|
|
||||||
public ?string $dbUrl = null;
|
public ?string $dbUrl = null;
|
||||||
|
|
@ -94,6 +96,7 @@ class General extends Component
|
||||||
'portsMappings' => 'nullable|string',
|
'portsMappings' => 'nullable|string',
|
||||||
'isPublic' => 'nullable|boolean',
|
'isPublic' => 'nullable|boolean',
|
||||||
'publicPort' => 'nullable|integer',
|
'publicPort' => 'nullable|integer',
|
||||||
|
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
|
||||||
'customDockerRunOptions' => 'nullable|string',
|
'customDockerRunOptions' => 'nullable|string',
|
||||||
'dbUrl' => 'nullable|string',
|
'dbUrl' => 'nullable|string',
|
||||||
'dbUrlPublic' => 'nullable|string',
|
'dbUrlPublic' => 'nullable|string',
|
||||||
|
|
@ -130,6 +133,7 @@ class General extends Component
|
||||||
$this->database->ports_mappings = $this->portsMappings;
|
$this->database->ports_mappings = $this->portsMappings;
|
||||||
$this->database->is_public = $this->isPublic;
|
$this->database->is_public = $this->isPublic;
|
||||||
$this->database->public_port = $this->publicPort;
|
$this->database->public_port = $this->publicPort;
|
||||||
|
$this->database->proxy_timeout = $this->proxyTimeout;
|
||||||
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
||||||
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
||||||
$this->database->enable_ssl = $this->enable_ssl;
|
$this->database->enable_ssl = $this->enable_ssl;
|
||||||
|
|
@ -146,6 +150,7 @@ class General extends Component
|
||||||
$this->portsMappings = $this->database->ports_mappings;
|
$this->portsMappings = $this->database->ports_mappings;
|
||||||
$this->isPublic = $this->database->is_public;
|
$this->isPublic = $this->database->is_public;
|
||||||
$this->publicPort = $this->database->public_port;
|
$this->publicPort = $this->database->public_port;
|
||||||
|
$this->proxyTimeout = $this->database->proxy_timeout;
|
||||||
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
||||||
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
||||||
$this->enable_ssl = $this->database->enable_ssl;
|
$this->enable_ssl = $this->database->enable_ssl;
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,8 @@ class General extends Component
|
||||||
|
|
||||||
public ?int $publicPort = null;
|
public ?int $publicPort = null;
|
||||||
|
|
||||||
|
public ?int $proxyTimeout = null;
|
||||||
|
|
||||||
public bool $isLogDrainEnabled = false;
|
public bool $isLogDrainEnabled = false;
|
||||||
|
|
||||||
public ?string $customDockerRunOptions = null;
|
public ?string $customDockerRunOptions = null;
|
||||||
|
|
@ -79,6 +81,8 @@ class General extends Component
|
||||||
'portsMappings' => 'nullable',
|
'portsMappings' => 'nullable',
|
||||||
'isPublic' => 'nullable|boolean',
|
'isPublic' => 'nullable|boolean',
|
||||||
'publicPort' => 'nullable|integer',
|
'publicPort' => 'nullable|integer',
|
||||||
|
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
|
||||||
|
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
|
||||||
'isLogDrainEnabled' => 'nullable|boolean',
|
'isLogDrainEnabled' => 'nullable|boolean',
|
||||||
'customDockerRunOptions' => 'nullable',
|
'customDockerRunOptions' => 'nullable',
|
||||||
'enableSsl' => 'boolean',
|
'enableSsl' => 'boolean',
|
||||||
|
|
@ -115,6 +119,8 @@ class General extends Component
|
||||||
'portsMappings' => 'Port Mapping',
|
'portsMappings' => 'Port Mapping',
|
||||||
'isPublic' => 'Is Public',
|
'isPublic' => 'Is Public',
|
||||||
'publicPort' => 'Public Port',
|
'publicPort' => 'Public Port',
|
||||||
|
'proxyTimeout' => 'Proxy Timeout',
|
||||||
|
'proxyTimeout' => 'Proxy Timeout',
|
||||||
'customDockerRunOptions' => 'Custom Docker Options',
|
'customDockerRunOptions' => 'Custom Docker Options',
|
||||||
'enableSsl' => 'Enable SSL',
|
'enableSsl' => 'Enable SSL',
|
||||||
];
|
];
|
||||||
|
|
@ -156,6 +162,7 @@ class General extends Component
|
||||||
$this->database->ports_mappings = $this->portsMappings;
|
$this->database->ports_mappings = $this->portsMappings;
|
||||||
$this->database->is_public = $this->isPublic;
|
$this->database->is_public = $this->isPublic;
|
||||||
$this->database->public_port = $this->publicPort;
|
$this->database->public_port = $this->publicPort;
|
||||||
|
$this->database->proxy_timeout = $this->proxyTimeout;
|
||||||
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
||||||
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
||||||
$this->database->enable_ssl = $this->enableSsl;
|
$this->database->enable_ssl = $this->enableSsl;
|
||||||
|
|
@ -175,6 +182,7 @@ class General extends Component
|
||||||
$this->portsMappings = $this->database->ports_mappings;
|
$this->portsMappings = $this->database->ports_mappings;
|
||||||
$this->isPublic = $this->database->is_public;
|
$this->isPublic = $this->database->is_public;
|
||||||
$this->publicPort = $this->database->public_port;
|
$this->publicPort = $this->database->public_port;
|
||||||
|
$this->proxyTimeout = $this->database->proxy_timeout;
|
||||||
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
||||||
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
||||||
$this->enableSsl = $this->database->enable_ssl;
|
$this->enableSsl = $this->database->enable_ssl;
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,8 @@ class General extends Component
|
||||||
|
|
||||||
public ?int $publicPort = null;
|
public ?int $publicPort = null;
|
||||||
|
|
||||||
|
public ?int $proxyTimeout = null;
|
||||||
|
|
||||||
public bool $isLogDrainEnabled = false;
|
public bool $isLogDrainEnabled = false;
|
||||||
|
|
||||||
public ?string $customDockerRunOptions = null;
|
public ?string $customDockerRunOptions = null;
|
||||||
|
|
@ -78,6 +80,7 @@ class General extends Component
|
||||||
'portsMappings' => 'nullable',
|
'portsMappings' => 'nullable',
|
||||||
'isPublic' => 'nullable|boolean',
|
'isPublic' => 'nullable|boolean',
|
||||||
'publicPort' => 'nullable|integer',
|
'publicPort' => 'nullable|integer',
|
||||||
|
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
|
||||||
'isLogDrainEnabled' => 'nullable|boolean',
|
'isLogDrainEnabled' => 'nullable|boolean',
|
||||||
'customDockerRunOptions' => 'nullable',
|
'customDockerRunOptions' => 'nullable',
|
||||||
'enableSsl' => 'boolean',
|
'enableSsl' => 'boolean',
|
||||||
|
|
@ -114,6 +117,7 @@ class General extends Component
|
||||||
'portsMappings' => 'Port Mapping',
|
'portsMappings' => 'Port Mapping',
|
||||||
'isPublic' => 'Is Public',
|
'isPublic' => 'Is Public',
|
||||||
'publicPort' => 'Public Port',
|
'publicPort' => 'Public Port',
|
||||||
|
'proxyTimeout' => 'Proxy Timeout',
|
||||||
'customDockerRunOptions' => 'Custom Docker Run Options',
|
'customDockerRunOptions' => 'Custom Docker Run Options',
|
||||||
'enableSsl' => 'Enable SSL',
|
'enableSsl' => 'Enable SSL',
|
||||||
'sslMode' => 'SSL Mode',
|
'sslMode' => 'SSL Mode',
|
||||||
|
|
@ -155,6 +159,7 @@ class General extends Component
|
||||||
$this->database->ports_mappings = $this->portsMappings;
|
$this->database->ports_mappings = $this->portsMappings;
|
||||||
$this->database->is_public = $this->isPublic;
|
$this->database->is_public = $this->isPublic;
|
||||||
$this->database->public_port = $this->publicPort;
|
$this->database->public_port = $this->publicPort;
|
||||||
|
$this->database->proxy_timeout = $this->proxyTimeout;
|
||||||
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
||||||
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
||||||
$this->database->enable_ssl = $this->enableSsl;
|
$this->database->enable_ssl = $this->enableSsl;
|
||||||
|
|
@ -174,6 +179,7 @@ class General extends Component
|
||||||
$this->portsMappings = $this->database->ports_mappings;
|
$this->portsMappings = $this->database->ports_mappings;
|
||||||
$this->isPublic = $this->database->is_public;
|
$this->isPublic = $this->database->is_public;
|
||||||
$this->publicPort = $this->database->public_port;
|
$this->publicPort = $this->database->public_port;
|
||||||
|
$this->proxyTimeout = $this->database->proxy_timeout;
|
||||||
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
||||||
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
||||||
$this->enableSsl = $this->database->enable_ssl;
|
$this->enableSsl = $this->database->enable_ssl;
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,8 @@ class General extends Component
|
||||||
|
|
||||||
public ?int $publicPort = null;
|
public ?int $publicPort = null;
|
||||||
|
|
||||||
|
public ?int $proxyTimeout = null;
|
||||||
|
|
||||||
public bool $isLogDrainEnabled = false;
|
public bool $isLogDrainEnabled = false;
|
||||||
|
|
||||||
public ?string $customDockerRunOptions = null;
|
public ?string $customDockerRunOptions = null;
|
||||||
|
|
@ -81,6 +83,7 @@ class General extends Component
|
||||||
'portsMappings' => 'nullable',
|
'portsMappings' => 'nullable',
|
||||||
'isPublic' => 'nullable|boolean',
|
'isPublic' => 'nullable|boolean',
|
||||||
'publicPort' => 'nullable|integer',
|
'publicPort' => 'nullable|integer',
|
||||||
|
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
|
||||||
'isLogDrainEnabled' => 'nullable|boolean',
|
'isLogDrainEnabled' => 'nullable|boolean',
|
||||||
'customDockerRunOptions' => 'nullable',
|
'customDockerRunOptions' => 'nullable',
|
||||||
'enableSsl' => 'boolean',
|
'enableSsl' => 'boolean',
|
||||||
|
|
@ -119,6 +122,7 @@ class General extends Component
|
||||||
'portsMappings' => 'Port Mapping',
|
'portsMappings' => 'Port Mapping',
|
||||||
'isPublic' => 'Is Public',
|
'isPublic' => 'Is Public',
|
||||||
'publicPort' => 'Public Port',
|
'publicPort' => 'Public Port',
|
||||||
|
'proxyTimeout' => 'Proxy Timeout',
|
||||||
'customDockerRunOptions' => 'Custom Docker Run Options',
|
'customDockerRunOptions' => 'Custom Docker Run Options',
|
||||||
'enableSsl' => 'Enable SSL',
|
'enableSsl' => 'Enable SSL',
|
||||||
'sslMode' => 'SSL Mode',
|
'sslMode' => 'SSL Mode',
|
||||||
|
|
@ -161,6 +165,7 @@ class General extends Component
|
||||||
$this->database->ports_mappings = $this->portsMappings;
|
$this->database->ports_mappings = $this->portsMappings;
|
||||||
$this->database->is_public = $this->isPublic;
|
$this->database->is_public = $this->isPublic;
|
||||||
$this->database->public_port = $this->publicPort;
|
$this->database->public_port = $this->publicPort;
|
||||||
|
$this->database->proxy_timeout = $this->proxyTimeout;
|
||||||
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
||||||
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
||||||
$this->database->enable_ssl = $this->enableSsl;
|
$this->database->enable_ssl = $this->enableSsl;
|
||||||
|
|
@ -181,6 +186,7 @@ class General extends Component
|
||||||
$this->portsMappings = $this->database->ports_mappings;
|
$this->portsMappings = $this->database->ports_mappings;
|
||||||
$this->isPublic = $this->database->is_public;
|
$this->isPublic = $this->database->is_public;
|
||||||
$this->publicPort = $this->database->public_port;
|
$this->publicPort = $this->database->public_port;
|
||||||
|
$this->proxyTimeout = $this->database->proxy_timeout;
|
||||||
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
||||||
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
||||||
$this->enableSsl = $this->database->enable_ssl;
|
$this->enableSsl = $this->database->enable_ssl;
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,8 @@ class General extends Component
|
||||||
|
|
||||||
public ?int $publicPort = null;
|
public ?int $publicPort = null;
|
||||||
|
|
||||||
|
public ?int $proxyTimeout = null;
|
||||||
|
|
||||||
public bool $isLogDrainEnabled = false;
|
public bool $isLogDrainEnabled = false;
|
||||||
|
|
||||||
public ?string $customDockerRunOptions = null;
|
public ?string $customDockerRunOptions = null;
|
||||||
|
|
@ -93,6 +95,7 @@ class General extends Component
|
||||||
'portsMappings' => 'nullable',
|
'portsMappings' => 'nullable',
|
||||||
'isPublic' => 'nullable|boolean',
|
'isPublic' => 'nullable|boolean',
|
||||||
'publicPort' => 'nullable|integer',
|
'publicPort' => 'nullable|integer',
|
||||||
|
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
|
||||||
'isLogDrainEnabled' => 'nullable|boolean',
|
'isLogDrainEnabled' => 'nullable|boolean',
|
||||||
'customDockerRunOptions' => 'nullable',
|
'customDockerRunOptions' => 'nullable',
|
||||||
'enableSsl' => 'boolean',
|
'enableSsl' => 'boolean',
|
||||||
|
|
@ -132,6 +135,7 @@ class General extends Component
|
||||||
'portsMappings' => 'Port Mapping',
|
'portsMappings' => 'Port Mapping',
|
||||||
'isPublic' => 'Is Public',
|
'isPublic' => 'Is Public',
|
||||||
'publicPort' => 'Public Port',
|
'publicPort' => 'Public Port',
|
||||||
|
'proxyTimeout' => 'Proxy Timeout',
|
||||||
'customDockerRunOptions' => 'Custom Docker Run Options',
|
'customDockerRunOptions' => 'Custom Docker Run Options',
|
||||||
'enableSsl' => 'Enable SSL',
|
'enableSsl' => 'Enable SSL',
|
||||||
'sslMode' => 'SSL Mode',
|
'sslMode' => 'SSL Mode',
|
||||||
|
|
@ -176,6 +180,7 @@ class General extends Component
|
||||||
$this->database->ports_mappings = $this->portsMappings;
|
$this->database->ports_mappings = $this->portsMappings;
|
||||||
$this->database->is_public = $this->isPublic;
|
$this->database->is_public = $this->isPublic;
|
||||||
$this->database->public_port = $this->publicPort;
|
$this->database->public_port = $this->publicPort;
|
||||||
|
$this->database->proxy_timeout = $this->proxyTimeout;
|
||||||
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
||||||
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
||||||
$this->database->enable_ssl = $this->enableSsl;
|
$this->database->enable_ssl = $this->enableSsl;
|
||||||
|
|
@ -198,6 +203,7 @@ class General extends Component
|
||||||
$this->portsMappings = $this->database->ports_mappings;
|
$this->portsMappings = $this->database->ports_mappings;
|
||||||
$this->isPublic = $this->database->is_public;
|
$this->isPublic = $this->database->is_public;
|
||||||
$this->publicPort = $this->database->public_port;
|
$this->publicPort = $this->database->public_port;
|
||||||
|
$this->proxyTimeout = $this->database->proxy_timeout;
|
||||||
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
||||||
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
||||||
$this->enableSsl = $this->database->enable_ssl;
|
$this->enableSsl = $this->database->enable_ssl;
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,8 @@ class General extends Component
|
||||||
|
|
||||||
public ?int $publicPort = null;
|
public ?int $publicPort = null;
|
||||||
|
|
||||||
|
public ?int $proxyTimeout = null;
|
||||||
|
|
||||||
public bool $isLogDrainEnabled = false;
|
public bool $isLogDrainEnabled = false;
|
||||||
|
|
||||||
public ?string $customDockerRunOptions = null;
|
public ?string $customDockerRunOptions = null;
|
||||||
|
|
@ -74,6 +76,7 @@ class General extends Component
|
||||||
'portsMappings' => 'nullable',
|
'portsMappings' => 'nullable',
|
||||||
'isPublic' => 'nullable|boolean',
|
'isPublic' => 'nullable|boolean',
|
||||||
'publicPort' => 'nullable|integer',
|
'publicPort' => 'nullable|integer',
|
||||||
|
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
|
||||||
'isLogDrainEnabled' => 'nullable|boolean',
|
'isLogDrainEnabled' => 'nullable|boolean',
|
||||||
'customDockerRunOptions' => 'nullable',
|
'customDockerRunOptions' => 'nullable',
|
||||||
'redisUsername' => 'required',
|
'redisUsername' => 'required',
|
||||||
|
|
@ -106,6 +109,7 @@ class General extends Component
|
||||||
'portsMappings' => 'Port Mapping',
|
'portsMappings' => 'Port Mapping',
|
||||||
'isPublic' => 'Is Public',
|
'isPublic' => 'Is Public',
|
||||||
'publicPort' => 'Public Port',
|
'publicPort' => 'Public Port',
|
||||||
|
'proxyTimeout' => 'Proxy Timeout',
|
||||||
'customDockerRunOptions' => 'Custom Docker Options',
|
'customDockerRunOptions' => 'Custom Docker Options',
|
||||||
'redisUsername' => 'Redis Username',
|
'redisUsername' => 'Redis Username',
|
||||||
'redisPassword' => 'Redis Password',
|
'redisPassword' => 'Redis Password',
|
||||||
|
|
@ -145,6 +149,7 @@ class General extends Component
|
||||||
$this->database->ports_mappings = $this->portsMappings;
|
$this->database->ports_mappings = $this->portsMappings;
|
||||||
$this->database->is_public = $this->isPublic;
|
$this->database->is_public = $this->isPublic;
|
||||||
$this->database->public_port = $this->publicPort;
|
$this->database->public_port = $this->publicPort;
|
||||||
|
$this->database->proxy_timeout = $this->proxyTimeout;
|
||||||
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
||||||
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
$this->database->custom_docker_run_options = $this->customDockerRunOptions;
|
||||||
$this->database->enable_ssl = $this->enableSsl;
|
$this->database->enable_ssl = $this->enableSsl;
|
||||||
|
|
@ -160,6 +165,7 @@ class General extends Component
|
||||||
$this->portsMappings = $this->database->ports_mappings;
|
$this->portsMappings = $this->database->ports_mappings;
|
||||||
$this->isPublic = $this->database->is_public;
|
$this->isPublic = $this->database->is_public;
|
||||||
$this->publicPort = $this->database->public_port;
|
$this->publicPort = $this->database->public_port;
|
||||||
|
$this->proxyTimeout = $this->database->proxy_timeout;
|
||||||
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled;
|
||||||
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
$this->customDockerRunOptions = $this->database->custom_docker_run_options;
|
||||||
$this->enableSsl = $this->database->enable_ssl;
|
$this->enableSsl = $this->database->enable_ssl;
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,8 @@ class Database extends Component
|
||||||
|
|
||||||
public ?int $publicPort = null;
|
public ?int $publicPort = null;
|
||||||
|
|
||||||
|
public ?int $proxyTimeout = null;
|
||||||
|
|
||||||
public bool $isPublic = false;
|
public bool $isPublic = false;
|
||||||
|
|
||||||
public bool $isLogDrainEnabled = false;
|
public bool $isLogDrainEnabled = false;
|
||||||
|
|
@ -43,6 +45,7 @@ class Database extends Component
|
||||||
'image' => 'required',
|
'image' => 'required',
|
||||||
'excludeFromStatus' => 'required|boolean',
|
'excludeFromStatus' => 'required|boolean',
|
||||||
'publicPort' => 'nullable|integer',
|
'publicPort' => 'nullable|integer',
|
||||||
|
'proxyTimeout' => 'nullable|integer|min:0|max:86400',
|
||||||
'isPublic' => 'required|boolean',
|
'isPublic' => 'required|boolean',
|
||||||
'isLogDrainEnabled' => 'required|boolean',
|
'isLogDrainEnabled' => 'required|boolean',
|
||||||
];
|
];
|
||||||
|
|
@ -75,6 +78,7 @@ class Database extends Component
|
||||||
$this->database->image = $this->image;
|
$this->database->image = $this->image;
|
||||||
$this->database->exclude_from_status = $this->excludeFromStatus;
|
$this->database->exclude_from_status = $this->excludeFromStatus;
|
||||||
$this->database->public_port = $this->publicPort;
|
$this->database->public_port = $this->publicPort;
|
||||||
|
$this->database->proxy_timeout = $this->proxyTimeout;
|
||||||
$this->database->is_public = $this->isPublic;
|
$this->database->is_public = $this->isPublic;
|
||||||
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
$this->database->is_log_drain_enabled = $this->isLogDrainEnabled;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -83,6 +87,7 @@ class Database extends Component
|
||||||
$this->image = $this->database->image;
|
$this->image = $this->database->image;
|
||||||
$this->excludeFromStatus = $this->database->exclude_from_status ?? false;
|
$this->excludeFromStatus = $this->database->exclude_from_status ?? false;
|
||||||
$this->publicPort = $this->database->public_port;
|
$this->publicPort = $this->database->public_port;
|
||||||
|
$this->proxyTimeout = $this->database->proxy_timeout;
|
||||||
$this->isPublic = $this->database->is_public ?? false;
|
$this->isPublic = $this->database->is_public ?? false;
|
||||||
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled ?? false;
|
$this->isLogDrainEnabled = $this->database->is_log_drain_enabled ?? false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
$tables = [
|
||||||
|
'standalone_postgresqls',
|
||||||
|
'standalone_mysqls',
|
||||||
|
'standalone_mariadbs',
|
||||||
|
'standalone_mongodbs',
|
||||||
|
'standalone_redis',
|
||||||
|
'standalone_keydbs',
|
||||||
|
'standalone_dragonflies',
|
||||||
|
'standalone_clickhouses',
|
||||||
|
'service_databases',
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($tables as $table) {
|
||||||
|
if (Schema::hasTable($table)) {
|
||||||
|
Schema::table($table, function (Blueprint $table) {
|
||||||
|
$table->integer('proxy_timeout')->default(1800)->after('public_port'); // 30 minutes default
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
$tables = [
|
||||||
|
'standalone_postgresqls',
|
||||||
|
'standalone_mysqls',
|
||||||
|
'standalone_mariadbs',
|
||||||
|
'standalone_mongodbs',
|
||||||
|
'standalone_redis',
|
||||||
|
'standalone_keydbs',
|
||||||
|
'standalone_dragonflies',
|
||||||
|
'standalone_clickhouses',
|
||||||
|
'service_databases',
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($tables as $table) {
|
||||||
|
if (Schema::hasTable($table) && Schema::hasColumn($table, 'proxy_timeout')) {
|
||||||
|
Schema::table($table, function (Blueprint $table) {
|
||||||
|
$table->dropColumn('proxy_timeout');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -76,8 +76,14 @@
|
||||||
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available" canGate="update"
|
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available" canGate="update"
|
||||||
:canResource="$database" />
|
:canResource="$database" />
|
||||||
</div>
|
</div>
|
||||||
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}" id="publicPort" label="Public Port"
|
<div class="flex items-end gap-2">
|
||||||
canGate="update" :canResource="$database" />
|
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}" id="publicPort" label="Public Port"
|
||||||
|
canGate="update" :canResource="$database" />
|
||||||
|
<x-forms.input value="1800" id="proxyTimeout"
|
||||||
|
label="Proxy Timeout (seconds)"
|
||||||
|
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
|
||||||
|
canGate="update" :canResource="$database" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<h3 class="pt-4">Advanced</h3>
|
<h3 class="pt-4">Advanced</h3>
|
||||||
|
|
|
||||||
|
|
@ -113,8 +113,14 @@
|
||||||
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available" canGate="update"
|
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available" canGate="update"
|
||||||
:canResource="$database" />
|
:canResource="$database" />
|
||||||
</div>
|
</div>
|
||||||
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}" id="publicPort" label="Public Port"
|
<div class="flex items-end gap-2">
|
||||||
canGate="update" :canResource="$database" />
|
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}" id="publicPort" label="Public Port"
|
||||||
|
canGate="update" :canResource="$database" />
|
||||||
|
<x-forms.input value="1800" id="proxyTimeout"
|
||||||
|
label="Proxy Timeout (seconds)"
|
||||||
|
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
|
||||||
|
canGate="update" :canResource="$database" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<h3 class="pt-4">Advanced</h3>
|
<h3 class="pt-4">Advanced</h3>
|
||||||
|
|
|
||||||
|
|
@ -113,8 +113,14 @@
|
||||||
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available" canGate="update"
|
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available" canGate="update"
|
||||||
:canResource="$database" />
|
:canResource="$database" />
|
||||||
</div>
|
</div>
|
||||||
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}" id="publicPort" label="Public Port"
|
<div class="flex items-end gap-2">
|
||||||
canGate="update" :canResource="$database" />
|
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}" id="publicPort" label="Public Port"
|
||||||
|
canGate="update" :canResource="$database" />
|
||||||
|
<x-forms.input value="1800" id="proxyTimeout"
|
||||||
|
label="Proxy Timeout (seconds)"
|
||||||
|
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
|
||||||
|
canGate="update" :canResource="$database" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<x-forms.textarea
|
<x-forms.textarea
|
||||||
helper="<a target='_blank' class='underline dark:text-white' href='https://raw.githubusercontent.com/Snapchat/KeyDB/unstable/keydb.conf'>KeyDB Default Configuration</a>"
|
helper="<a target='_blank' class='underline dark:text-white' href='https://raw.githubusercontent.com/Snapchat/KeyDB/unstable/keydb.conf'>KeyDB Default Configuration</a>"
|
||||||
|
|
|
||||||
|
|
@ -137,8 +137,14 @@
|
||||||
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available"
|
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available"
|
||||||
canGate="update" :canResource="$database" />
|
canGate="update" :canResource="$database" />
|
||||||
</div>
|
</div>
|
||||||
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}"
|
<div class="flex items-end gap-2">
|
||||||
id="publicPort" label="Public Port" canGate="update" :canResource="$database" />
|
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}"
|
||||||
|
id="publicPort" label="Public Port" canGate="update" :canResource="$database" />
|
||||||
|
<x-forms.input value="1800" id="proxyTimeout"
|
||||||
|
label="Proxy Timeout (seconds)"
|
||||||
|
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
|
||||||
|
canGate="update" :canResource="$database" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<x-forms.textarea label="Custom MariaDB Configuration" rows="10" id="mariadbConf"
|
<x-forms.textarea label="Custom MariaDB Configuration" rows="10" id="mariadbConf"
|
||||||
canGate="update" :canResource="$database" />
|
canGate="update" :canResource="$database" />
|
||||||
|
|
|
||||||
|
|
@ -151,8 +151,14 @@
|
||||||
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available"
|
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available"
|
||||||
canGate="update" :canResource="$database" />
|
canGate="update" :canResource="$database" />
|
||||||
</div>
|
</div>
|
||||||
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}"
|
<div class="flex items-end gap-2">
|
||||||
id="publicPort" label="Public Port" canGate="update" :canResource="$database" />
|
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}"
|
||||||
|
id="publicPort" label="Public Port" canGate="update" :canResource="$database" />
|
||||||
|
<x-forms.input value="1800" id="proxyTimeout"
|
||||||
|
label="Proxy Timeout (seconds)"
|
||||||
|
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
|
||||||
|
canGate="update" :canResource="$database" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<x-forms.textarea label="Custom MongoDB Configuration" rows="10" id="mongoConf"
|
<x-forms.textarea label="Custom MongoDB Configuration" rows="10" id="mongoConf"
|
||||||
canGate="update" :canResource="$database" />
|
canGate="update" :canResource="$database" />
|
||||||
|
|
|
||||||
|
|
@ -153,8 +153,14 @@
|
||||||
</div>
|
</div>
|
||||||
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available" canGate="update" :canResource="$database" />
|
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available" canGate="update" :canResource="$database" />
|
||||||
</div>
|
</div>
|
||||||
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}"
|
<div class="flex items-end gap-2">
|
||||||
id="publicPort" label="Public Port" canGate="update" :canResource="$database" />
|
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}"
|
||||||
|
id="publicPort" label="Public Port" canGate="update" :canResource="$database" />
|
||||||
|
<x-forms.input value="1800" id="proxyTimeout"
|
||||||
|
label="Proxy Timeout (seconds)"
|
||||||
|
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
|
||||||
|
canGate="update" :canResource="$database" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<x-forms.textarea label="Custom Mysql Configuration" rows="10" id="mysqlConf" canGate="update" :canResource="$database" />
|
<x-forms.textarea label="Custom Mysql Configuration" rows="10" id="mysqlConf" canGate="update" :canResource="$database" />
|
||||||
<h3 class="pt-4">Advanced</h3>
|
<h3 class="pt-4">Advanced</h3>
|
||||||
|
|
|
||||||
|
|
@ -163,8 +163,14 @@
|
||||||
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available"
|
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available"
|
||||||
canGate="update" :canResource="$database" />
|
canGate="update" :canResource="$database" />
|
||||||
</div>
|
</div>
|
||||||
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}" id="publicPort"
|
<div class="flex items-end gap-2">
|
||||||
label="Public Port" canGate="update" :canResource="$database" />
|
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}" id="publicPort"
|
||||||
|
label="Public Port" canGate="update" :canResource="$database" />
|
||||||
|
<x-forms.input value="1800" id="proxyTimeout"
|
||||||
|
label="Proxy Timeout (seconds)"
|
||||||
|
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
|
||||||
|
canGate="update" :canResource="$database" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-col gap-2">
|
<div class="flex flex-col gap-2">
|
||||||
|
|
|
||||||
|
|
@ -132,8 +132,14 @@
|
||||||
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available"
|
<x-forms.checkbox instantSave id="isPublic" label="Make it publicly available"
|
||||||
canGate="update" :canResource="$database" />
|
canGate="update" :canResource="$database" />
|
||||||
</div>
|
</div>
|
||||||
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}"
|
<div class="flex items-end gap-2">
|
||||||
id="publicPort" label="Public Port" canGate="update" :canResource="$database" />
|
<x-forms.input placeholder="5432" disabled="{{ $isPublic }}"
|
||||||
|
id="publicPort" label="Public Port" canGate="update" :canResource="$database" />
|
||||||
|
<x-forms.input value="1800" id="proxyTimeout"
|
||||||
|
label="Proxy Timeout (seconds)"
|
||||||
|
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)"
|
||||||
|
canGate="update" :canResource="$database" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<x-forms.textarea placeholder="# maxmemory 256mb
|
<x-forms.textarea placeholder="# maxmemory 256mb
|
||||||
# maxmemory-policy allkeys-lru
|
# maxmemory-policy allkeys-lru
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,9 @@
|
||||||
<div class="flex items-end gap-2">
|
<div class="flex items-end gap-2">
|
||||||
<x-forms.input canGate="update" :canResource="$database" placeholder="5432" disabled="{{ $database->is_public }}" id="publicPort"
|
<x-forms.input canGate="update" :canResource="$database" placeholder="5432" disabled="{{ $database->is_public }}" id="publicPort"
|
||||||
label="Public Port" />
|
label="Public Port" />
|
||||||
|
<x-forms.input canGate="update" :canResource="$database" value="1800" id="proxyTimeout"
|
||||||
|
label="Proxy Timeout (seconds)"
|
||||||
|
helper="Maximum time in seconds to keep connections open. Default is 1800 seconds (30 minutes) and max is 86400 seconds (24 hours)" />
|
||||||
<x-forms.checkbox canGate="update" :canResource="$database" instantSave id="isPublic" label="Make it publicly available" />
|
<x-forms.checkbox canGate="update" :canResource="$database" instantSave id="isPublic" label="Make it publicly available" />
|
||||||
</div>
|
</div>
|
||||||
@if ($db_url_public)
|
@if ($db_url_public)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue