feat: implement initial GoDump backup service with management web UI and MySQL support

This commit is contained in:
2026-06-04 16:59:53 +00:00
parent 2dc6ee723f
commit 318f6c9b46
16 changed files with 1935 additions and 1 deletions
+50
View File
@@ -0,0 +1,50 @@
package backup
import (
"database/sql"
"fmt"
"godump/config"
_ "github.com/go-sql-driver/mysql"
)
func discoverDatabases(cfg config.InstanceConfig) ([]string, error) {
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/?parseTime=true", cfg.User, cfg.Password, cfg.Host, cfg.Port)
db, err := sql.Open("mysql", dsn)
if err != nil {
return nil, err
}
defer db.Close()
// Ensure the connection is actually valid
if err := db.Ping(); err != nil {
return nil, err
}
query := `
SELECT SCHEMA_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')
`
rows, err := db.Query(query)
if err != nil {
return nil, err
}
defer rows.Close()
var databases []string
for rows.Next() {
var name string
if err := rows.Scan(&name); err != nil {
return nil, err
}
databases = append(databases, name)
}
if err := rows.Err(); err != nil {
return nil, err
}
return databases, nil
}