数据库模块完成-1
This commit is contained in:
@@ -29,9 +29,6 @@ func NewDatabaseCmd() *cobra.Command {
|
||||
}
|
||||
|
||||
log.Info("初始化数据库...")
|
||||
if force {
|
||||
log.Warn("⚠️ 警告:强制重新初始化将清空数据库中的所有数据!")
|
||||
}
|
||||
|
||||
dbInst := db.MustGetDB() // panic if fail (ok for CLI tool)
|
||||
if err := dbInst.InitSchema(force); err != nil {
|
||||
|
||||
53
cmd/root.go
53
cmd/root.go
@@ -1,13 +1,11 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
initcmd "sunhpc/cmd/init"
|
||||
"sunhpc/cmd/soft"
|
||||
"sunhpc/cmd/tmpl"
|
||||
"sunhpc/internal/auth"
|
||||
"sunhpc/internal/config"
|
||||
"sunhpc/internal/db"
|
||||
"sunhpc/internal/log"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
@@ -19,43 +17,6 @@ var (
|
||||
noColor bool
|
||||
)
|
||||
|
||||
func checkDB() error {
|
||||
cfg, err := config.LoadConfig()
|
||||
if err != nil {
|
||||
log.Fatal("加载配置失败: ", err)
|
||||
}
|
||||
|
||||
// 统一转为小写,避免用户输入错误
|
||||
dbType := strings.ToLower(cfg.DB.Type)
|
||||
|
||||
// 打印配置(调试用)
|
||||
log.Debugf("数据库类型: %s", dbType)
|
||||
log.Debugf("数据库名称: %s", cfg.DB.Name)
|
||||
log.Debugf("数据库路径: %s", cfg.DB.Path)
|
||||
log.Debugf("数据库用户: %s", cfg.DB.User)
|
||||
log.Debugf("数据库主机: %s", cfg.DB.Host)
|
||||
log.Debugf("数据库套接字: %s", cfg.DB.Socket)
|
||||
log.Debugf("数据库详细日志: %v", cfg.DB.Verbose)
|
||||
|
||||
// 支持 sqlite,mysql的常见别名
|
||||
isSQLite := dbType == "sqlite" || dbType == "sqlite3"
|
||||
isMySQL := dbType == "mysql"
|
||||
|
||||
// 检查数据库类型,只允许 sqlite 和 mysql
|
||||
if !isSQLite && !isMySQL {
|
||||
log.Fatalf("不支持的数据库类型: %s(仅支持 sqlite、sqlite3、mysql)", dbType)
|
||||
}
|
||||
|
||||
// 检查数据库路径是否存在
|
||||
if isSQLite {
|
||||
if _, err := os.Stat(cfg.DB.Path); os.IsNotExist(err) {
|
||||
log.Warnf("SQLite 数据库路径 %s 不存在", cfg.DB.Path)
|
||||
log.Fatalf("必须先执行 'sunhpc init database' 初始化数据库")
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "sunhpc",
|
||||
Short: "SunHPC - HPC集群一体化运维工具",
|
||||
@@ -68,15 +29,9 @@ var rootCmd = &cobra.Command{
|
||||
|
||||
log.Debugf("当前命令 Annotations: %+v", cmd.Annotations)
|
||||
|
||||
// 检查当前命令是否标记为跳过 DB 检查
|
||||
if cmd.Annotations["skip-db-check"] == "true" {
|
||||
log.Debugf("当前命令 %s 标记为跳过 DB 检查", cmd.Name())
|
||||
return
|
||||
} else {
|
||||
// 检查数据库
|
||||
if err := checkDB(); err != nil {
|
||||
log.Fatalf("数据库检查失败: %v", err)
|
||||
}
|
||||
_, err := db.CheckDB()
|
||||
if err != nil {
|
||||
log.Warnf("数据库检查失败: %v", err)
|
||||
}
|
||||
|
||||
// 需要 root 权限
|
||||
|
||||
Reference in New Issue
Block a user