mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-10-06 05:24:33 +08:00
fix: Add custom timeout support for remote database (#9859)
This commit is contained in:
parent
9c5a6e3925
commit
37308b5c42
17 changed files with 37 additions and 16 deletions
|
@ -135,6 +135,7 @@ func (u *DatabaseService) CheckDatabase(req dto.DatabaseCreate) bool {
|
|||
Address: req.Address,
|
||||
Port: req.Port,
|
||||
Password: req.Password,
|
||||
Timeout: req.Timeout,
|
||||
})
|
||||
return err == nil
|
||||
case "mysql", "mariadb":
|
||||
|
@ -186,6 +187,7 @@ func (u *DatabaseService) Create(req dto.DatabaseCreate) error {
|
|||
Address: req.Address,
|
||||
Port: req.Port,
|
||||
Password: req.Password,
|
||||
Timeout: req.Timeout,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -286,6 +288,7 @@ func (u *DatabaseService) Update(req dto.DatabaseUpdate) error {
|
|||
Address: req.Address,
|
||||
Port: req.Port,
|
||||
Password: req.Password,
|
||||
Timeout: req.Timeout,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package redis
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/1Panel-dev/1Panel/agent/global"
|
||||
"github.com/go-redis/redis"
|
||||
|
@ -11,13 +12,15 @@ type DBInfo struct {
|
|||
Address string `json:"address"`
|
||||
Port uint `json:"port"`
|
||||
Password string `json:"password"`
|
||||
Timeout uint `json:"timeout"`
|
||||
}
|
||||
|
||||
func NewRedisClient(conn DBInfo) (*redis.Client, error) {
|
||||
client := redis.NewClient(&redis.Options{
|
||||
Addr: fmt.Sprintf("%s:%v", conn.Address, conn.Port),
|
||||
Password: conn.Password,
|
||||
DB: 0,
|
||||
Addr: fmt.Sprintf("%s:%v", conn.Address, conn.Port),
|
||||
Password: conn.Password,
|
||||
DB: 0,
|
||||
DialTimeout: time.Duration(conn.Timeout) * time.Second,
|
||||
})
|
||||
|
||||
if _, err := client.Ping().Result(); err != nil {
|
||||
|
|
|
@ -163,7 +163,7 @@ export const checkDatabase = (params: Database.DatabaseCreate) => {
|
|||
request.rootCert = Base64.encode(request.rootCert);
|
||||
}
|
||||
|
||||
return http.post<boolean>(`/databases/db/check`, request, TimeoutEnum.T_40S);
|
||||
return http.post<boolean>(`/databases/db/check`, request, TimeoutEnum.T_60S);
|
||||
};
|
||||
export const addDatabase = (params: Database.DatabaseCreate) => {
|
||||
let request = deepCopy(params) as Database.DatabaseCreate;
|
||||
|
@ -173,7 +173,7 @@ export const addDatabase = (params: Database.DatabaseCreate) => {
|
|||
request.rootCert = Base64.encode(request.rootCert);
|
||||
}
|
||||
|
||||
return http.post(`/databases/db`, request, TimeoutEnum.T_40S);
|
||||
return http.post(`/databases/db`, request, TimeoutEnum.T_60S);
|
||||
};
|
||||
export const editDatabase = (params: Database.DatabaseUpdate) => {
|
||||
let request = deepCopy(params) as Database.DatabaseCreate;
|
||||
|
@ -183,7 +183,7 @@ export const editDatabase = (params: Database.DatabaseUpdate) => {
|
|||
request.rootCert = Base64.encode(request.rootCert);
|
||||
}
|
||||
|
||||
return http.post(`/databases/db/update`, request, TimeoutEnum.T_40S);
|
||||
return http.post(`/databases/db/update`, request, TimeoutEnum.T_60S);
|
||||
};
|
||||
export const deleteCheckDatabase = (id: number) => {
|
||||
return http.post<Array<string>>(`/databases/db/del/check`, { id: id });
|
||||
|
|
|
@ -488,7 +488,6 @@ const message = {
|
|||
passwordHelper: 'Unable to retrieve, please modify',
|
||||
remote: 'Remote',
|
||||
remoteDB: 'Remote server | Remote servers',
|
||||
manageRemoteDB: 'Manage remote servers',
|
||||
createRemoteDB: 'Bind @.lower:database.remoteDB',
|
||||
unBindRemoteDB: 'Unbind @.lower:database.remoteDB',
|
||||
unBindForce: 'Force unbind',
|
||||
|
|
|
@ -474,7 +474,6 @@ const message = {
|
|||
passwordHelper: '取得できない場合は、変更してください',
|
||||
remote: 'リモート',
|
||||
remoteDB: 'リモートサーバー|リモートサーバー',
|
||||
manageRemoteDB: 'リモートDB',
|
||||
createRemoteDB: 'リモートサーバーを追加',
|
||||
unBindRemoteDB: 'リモートサーバーのバインドを解除',
|
||||
unBindForce: '強制バインド',
|
||||
|
|
|
@ -473,7 +473,6 @@ const message = {
|
|||
passwordHelper: '불러올 수 없습니다. 수정해주세요.',
|
||||
remote: '원격',
|
||||
remoteDB: '원격 서버 | 원격 서버들',
|
||||
manageRemoteDB: '원격 DB 관리',
|
||||
createRemoteDB: '원격 DB 바인딩',
|
||||
unBindRemoteDB: '원격 DB 바인딩 해제',
|
||||
unBindForce: '강제 바인딩 해제',
|
||||
|
|
|
@ -485,7 +485,6 @@ const message = {
|
|||
passwordHelper: 'Tidak dapat diambil, sila ubah',
|
||||
remote: 'Jauh',
|
||||
remoteDB: 'Pelayan jauh | Pelayan-pelayan jauh',
|
||||
manageRemoteDB: 'Pangkalan Data Jauh',
|
||||
createRemoteDB: 'Kaitkan @.lower:database.remoteDB',
|
||||
unBindRemoteDB: 'Nyahkaitkan @.lower:database.remoteDB',
|
||||
unBindForce: 'Paksa nyahkait',
|
||||
|
|
|
@ -482,7 +482,6 @@ const message = {
|
|||
passwordHelper: 'Não é possível obter, por favor, modifique',
|
||||
remote: 'Remoto',
|
||||
remoteDB: 'Servidor remoto | Servidores remotos',
|
||||
manageRemoteDB: 'Gerenciar DB remoto',
|
||||
createRemoteDB: 'Vincular @.lower:database.remoteDB',
|
||||
unBindRemoteDB: 'Desvincular @.lower:database.remoteDB',
|
||||
unBindForce: 'Forçar desvinculação',
|
||||
|
|
|
@ -476,7 +476,6 @@ const message = {
|
|||
passwordHelper: 'Невозможно получить, пожалуйста, измените',
|
||||
remote: 'Удаленный',
|
||||
remoteDB: 'Удаленный сервер | Удаленные серверы',
|
||||
manageRemoteDB: 'Удаленная БД',
|
||||
createRemoteDB: 'Привязать @.lower:database.remoteDB',
|
||||
unBindRemoteDB: 'Отвязать @.lower:database.remoteDB',
|
||||
unBindForce: 'Принудительная отвязка',
|
||||
|
|
|
@ -494,7 +494,6 @@ const message = {
|
|||
passwordHelper: 'Alınamıyor, lütfen değiştirin',
|
||||
remote: 'Uzak',
|
||||
remoteDB: 'Uzak sunucu | Uzak sunucular',
|
||||
manageRemoteDB: 'Uzak sunucuları yönet',
|
||||
createRemoteDB: '@.lower:database.remoteDB Bağla',
|
||||
unBindRemoteDB: '@.lower:database.remoteDB Bağlantısını Çöz',
|
||||
unBindForce: 'Zorla bağlantıyı çöz',
|
||||
|
|
|
@ -472,7 +472,6 @@ const message = {
|
|||
passwordHelper: '無法獲取密碼,請修改',
|
||||
remote: '遠程',
|
||||
remoteDB: '遠程服務器',
|
||||
manageRemoteDB: '管理遠程服務器',
|
||||
createRemoteDB: '添加遠程服務器',
|
||||
unBindRemoteDB: '解綁遠程服務器',
|
||||
unBindForce: '強制解綁',
|
||||
|
|
|
@ -470,7 +470,6 @@ const message = {
|
|||
passwordHelper: '无法获取密码,请修改',
|
||||
remote: '远程',
|
||||
remoteDB: '远程服务器',
|
||||
manageRemoteDB: '管理远程服务器',
|
||||
createRemoteDB: '添加远程服务器',
|
||||
unBindRemoteDB: '解绑远程服务器',
|
||||
unBindForce: '强制解绑',
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
{{ $t('database.loadFromRemote') }}
|
||||
</el-button>
|
||||
<el-button @click="goRemoteDB()" type="primary" plain>
|
||||
{{ $t('database.manageRemoteDB') }}
|
||||
{{ $t('database.remoteDB') }}
|
||||
</el-button>
|
||||
<el-dropdown>
|
||||
<el-button type="primary" plain>
|
||||
|
|
|
@ -127,12 +127,14 @@ const onOpenDialog = async (
|
|||
username: '',
|
||||
password: '',
|
||||
description: '',
|
||||
timeout: 30,
|
||||
},
|
||||
) => {
|
||||
let params = {
|
||||
title,
|
||||
rowData: { ...rowData },
|
||||
};
|
||||
params.rowData.timeout = 30;
|
||||
dialogRef.value!.acceptParams(params);
|
||||
};
|
||||
|
||||
|
|
|
@ -39,6 +39,16 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item :label="$t('database.timeout')" prop="timeout">
|
||||
<el-input-number
|
||||
class="p-w-200"
|
||||
:min="1"
|
||||
:precision="0"
|
||||
step-strictly
|
||||
:step="1"
|
||||
v-model.number="dialogData.rowData!.timeout"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('commons.table.description')" prop="description">
|
||||
<el-input clearable v-model.trim="dialogData.rowData!.description" />
|
||||
</el-form-item>
|
||||
|
|
|
@ -127,12 +127,14 @@ const onOpenDialog = async (
|
|||
username: '-',
|
||||
password: '',
|
||||
description: '',
|
||||
timeout: 30,
|
||||
},
|
||||
) => {
|
||||
let params = {
|
||||
title,
|
||||
rowData: { ...rowData },
|
||||
};
|
||||
params.rowData.timeout = 30;
|
||||
dialogRef.value!.acceptParams(params);
|
||||
};
|
||||
|
||||
|
|
|
@ -33,6 +33,16 @@
|
|||
v-model.trim="dialogData.rowData!.password"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('database.timeout')" prop="timeout">
|
||||
<el-input-number
|
||||
class="p-w-200"
|
||||
:min="1"
|
||||
:precision="0"
|
||||
step-strictly
|
||||
:step="1"
|
||||
v-model.number="dialogData.rowData!.timeout"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('commons.table.description')" prop="description">
|
||||
<el-input clearable v-model.trim="dialogData.rowData!.description" />
|
||||
</el-form-item>
|
||||
|
|
Loading…
Add table
Reference in a new issue