package cmd import ( "fmt" "go-nc/internal/bootstrap/boots" "go-nc/model" "os" "github.com/spf13/cobra" "go.uber.org/zap" "gorm.io/gorm" ) var dbUpCmd = &cobra.Command{ Use: "dbUp", Short: "dp.", Long: "数据库DB上传到数据库中", Run: runDbUp, } func init() { rootCmd.AddCommand(dbUpCmd) } func runDbUp(cmd *cobra.Command, args []string) { // TODO 这里处理dbUp子命令 // 初始化配置 boots.InitConfig() // 初始化日志 log := boots.InitLog() // 初始化数据库 db := boots.InitDB() // 自动迁移 User 模型 if err := db.AutoMigrate(model.Models...); err != nil { log.Error("DB 表创建失败", zap.Error(err)) } else { log.Info("DB 表创建成功") } // 构建 SQL 文件路径 // projectRoot := utils.GetProjectRoot() // sqlFilePath := filepath.Join(projectRoot, "model/sql/initData.sql") // if _, err := os.Stat(sqlFilePath); err != nil { // sqlFilePath = utils.GetExePath() + "/configs/initData.sql" // } // // 执行 SQL 文件 // executeSQLFile(db, sqlFilePath) // 释放数据库连接 defer closeDBConnection(db) os.Exit(0) } // 执行 SQL 文件 func executeSQLFile(db *gorm.DB, sqlFilePath string) { logger := boots.InitLogger() content, err := os.ReadFile(sqlFilePath) if err != nil { logger.Error("SQL: 读取初始SQL数据文件失败", zap.Error(err)) return } err = db.Exec(string(content)).Error if err != nil { logger.Error("SQL: 执行初始SQL数据文件失败", zap.Error(err)) return } logger.Info("SQL:执行初始SQL数据文件成功!") } func closeDBConnection(db *gorm.DB) { if db != nil { dbDB, err := db.DB() if err == nil { // 关闭数据库连接 fmt.Println("数据库连接已关闭") dbDB.Close() } } }