Files
panel/internal/request/toolbox_migration.go
T
耗子 9c977c154b feat: 迁移支持 ClickHouse 数据库并修复多处问题
- 数据库迁移新增 ClickHouse 支持(结构 + SQLInsert 数据导出,远程 multiquery 导入)
- 数据库用户先于数据库迁移,修复导入时属主角色不存在
- pg_dump 加 --clean --if-exists,mysqldump 加 --routines --events
- 修复远程解压失败、SSE 流中断被静默当作成功的问题
- 临时文件改到面板目录 tmp 下,避免撑爆 /tmp 内存盘

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 22:15:17 +08:00

56 lines
2.0 KiB
Go

package request
// ToolboxMigrationConnection 迁移连接信息
type ToolboxMigrationConnection struct {
URL string `json:"url" validate:"required"`
TokenID uint `json:"token_id" validate:"required"`
Token string `json:"token" validate:"required"`
}
// ToolboxMigrationItems 迁移选择项
type ToolboxMigrationItems struct {
Websites []ToolboxMigrationWebsite `json:"websites"`
Databases []ToolboxMigrationDatabase `json:"databases"`
DatabaseUsers []ToolboxMigrationDatabaseUser `json:"database_users"`
Projects []ToolboxMigrationProject `json:"projects"`
StopOnMig bool `json:"stop_on_mig"` // 迁移中是否停止服务
}
// ToolboxMigrationWebsite 迁移网站项
type ToolboxMigrationWebsite struct {
ID uint `json:"id"`
Name string `json:"name"`
Path string `json:"path"` // 网站目录
}
// ToolboxMigrationDatabase 迁移数据库项
type ToolboxMigrationDatabase struct {
Type string `json:"type" validate:"in:mysql,postgresql,clickhouse"` // mysql / postgresql / clickhouse
Name string `json:"name"`
ServerID uint `json:"server_id"`
Server string `json:"server"` // 服务器名称
}
// ToolboxMigrationDatabaseUser 迁移数据库用户项
type ToolboxMigrationDatabaseUser struct {
ID uint `json:"id"`
Username string `json:"username"`
Password string `json:"password"`
Host string `json:"host"` // 仅 mysql
ServerID uint `json:"server_id"`
Server string `json:"server"` // 服务器名称
Type string `json:"type" validate:"in:mysql,postgresql,clickhouse"` // mysql / postgresql / clickhouse
}
// ToolboxMigrationProject 迁移项目项
type ToolboxMigrationProject struct {
ID uint `json:"id"`
Name string `json:"name"`
Path string `json:"path"` // 项目目录
}
// ToolboxMigrationExec 远程执行命令请求
type ToolboxMigrationExec struct {
Command string `json:"command" validate:"required"`
}